Vscode-docker: рдорд▓реНрдЯреА рд╕реНрдЯреЗрдЬ рдбреЙрдХрдЯрд░ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 28 рдЕрдкреНрд░реИрд▓ 2017  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: microsoft/vscode-docker

рд╢рд╛рдпрдж рдХреЗрд╡рд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ dockerfile рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

https://codefresh.io/blog/node_docker_multistage/

//cc: @lostintangent

рдЕрд╕реНрдкрд╖реНрдЯ рд╡рд┐рдЪрд╛рд░...

FROM node:latest AS base
WORKDIR /usr/src/app
COPY package.json .

FROM base AS dependencies
RUN npm set progress=false && npm config set depth 0
RUN npm install --only=production
RUN cp -R node_modules prod_node_modules
RUN npm install

FROM dependencies AS build
COPY . .
RUN ./node_modules/.bin/gulp
RUN cp -R client prod_client

FROM base AS release
COPY --from=dependencies /usr/src/app/prod_node_modules ./node_modules
COPY --from=build /usr/src/app/prod_client ./client
COPY . .
EXPOSE 3000
CMD npm run start
enhancement needs more info

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╕реБрдирдиреЗ рдореЗрдВ рддреЛ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ! рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднреА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

  1. рдирдП AS рдХреАрд╡рд░реНрдб рдФрд░ --from рдзреНрд╡рдЬ рдХреЛ рдареАрдХ рд╕реЗ рд░рдВрдЧрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди-рдмреЙрдХреНрд╕ рдбреЙрдХрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред рдпрд╣ рдХрдо рдкреНрд░рд╛рдердорд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЬ рдмрд┐рд▓реНрдб рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ

  2. FROM рдирд┐рд░реНрджреЗрд╢ рдХреЗ AS foo рдЦрдВрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдЯрд░ рдирд┐рдпрдореЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЭреВрдареА рдирдХрд╛рд░рд╛рддреНрдордХ рдмрд╛рддреЗрдВ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ

рд╕рднреА 7 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╕реБрдирдиреЗ рдореЗрдВ рддреЛ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ! рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднреА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

  1. рдирдП AS рдХреАрд╡рд░реНрдб рдФрд░ --from рдзреНрд╡рдЬ рдХреЛ рдареАрдХ рд╕реЗ рд░рдВрдЧрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди-рдмреЙрдХреНрд╕ рдбреЙрдХрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред рдпрд╣ рдХрдо рдкреНрд░рд╛рдердорд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЬ рдмрд┐рд▓реНрдб рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ

  2. FROM рдирд┐рд░реНрджреЗрд╢ рдХреЗ AS foo рдЦрдВрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдЯрд░ рдирд┐рдпрдореЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЭреВрдареА рдирдХрд╛рд░рд╛рддреНрдордХ рдмрд╛рддреЗрдВ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ

рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╡рд░реНрджреНрдзрди рдкрд░ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

  1. FROM рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ AS рдХреНрд▓реЙрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЫрд╡рд┐ рдирд╛рдо рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрд╡рд░ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред рдЕрднреА, FROM/AS . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣реЛрд╡рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ

  2. COPY рдирд┐рд░реНрджреЗрд╢ рдФрд░ FROM рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ "--from=" рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╕рдордп рдЖрдзрд╛рд░ рдЫрд╡рд┐ рдирд╛рдореЛрдВ рдХреА рдПрдХ рдкреВрд░реНрдг рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдХреЗ Dockerfile рдкреВрд░реНрдгрддрд╛ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред

рдЬрдмрдХрд┐ рдЖрдк рдЗрд╕рдореЗрдВ рд╣реИрдВред рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕реАрдПрдордбреА рдирд┐рд░реНрджреЗрд╢ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЪреЗрддрд╛рд╡рдиреА (рдЧреНрд░реАрди рд╕реНрдХреНрд╡реАрдЧрд▓) рдЕрдм рдЧрд▓рдд рд╣реИред

рд╣рд╛рдп, @ рд╕реАрдВрдХ-рдХреЙрдоред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЖрдк рдЬрд┐рд╕ рдмрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ rcjsuen/dockerfile-utils#22 рд╣реИред рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ https://github.com/rcjsuen/dockerfile-utils/issues/22#issuecomment -366485869 рджреЗрдЦреЗрдВред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЙрд╕ рдмрдЧ рдХреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ #249 рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рдЕрдиреНрдп рдЕрдЬреАрдм рдпрд╛ рдЧрд▓рдд рд╕рддреНрдпрд╛рдкрди рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдиреЗ рдореЗрдВ рд╕рдВрдХреЛрдЪ рди рдХрд░реЗрдВред рдзрдиреНрдпрд╡рд╛рдж!

рд╡рд░реНрддрдорд╛рди Node.js рдЯреЗрдореНрдкрд▓реЗрдЯ:

рдиреЛрдб рд╕реЗ:10.13-рдЕрд▓реНрдкрд╛рдЗрди
ENV NODE_ENV рдЙрддреНрдкрд╛рджрди
рд╡рд░реНрдХрдбреАрд░ /usr/src/app
рдХреЙрдкреА ["package.json", "package-lock.json ", "npm-shrinkwrap.json ", "./"]
RUN npm install --production --silent && mv node_modules ../
рдХреЙрдкреА рдХрд░реЗрдВред .
рдПрдХреНрд╕рдкреЛрдЬ 3000
рд╕реАрдПрдордбреА рдПрдирдкреАрдПрдо рдкреНрд░рд╛рд░рдВрдн

@lostintangent , @chrisdias рдХреНрдпрд╛ рд╣рдореЗрдВ рдмреЗрд╣рддрд░ рдЕрднреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕реБрдзрд╛рд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

@lostintangent @chrisdias рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░?

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрдкрдиреЗ рдЖрдк рдмрдВрдж рдХрд░ рджреА рдЧрдИ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╣рд╛рд▓ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред рд╣рдорд╛рд░реЗ рдореБрджреНрджреЗ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рднреА рджреЗрдЦреЗрдВред

рд╣реИрдкреНрдкреА рдХреЛрдбрд┐рдВрдЧ!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

samhwang picture samhwang  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Szauka picture Szauka  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

oberfoerster picture oberfoerster  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

wsmelton picture wsmelton  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

thernstig picture thernstig  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ