рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ Nuxt.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдЗрд╕реЛрдореЛрд░реНрдлрд┐рдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреИрдирд╛рдд рдХрд░реЗрдВред


рдордзреНрдпрдо рдФрд░ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рд╕рд╛рдЗрдЯ рдПрдХ рд╕реЗрд╡рд╛ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рдЗрдЯ, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕, рдПрдХ рдПрдкреАрдЖрдИ, рдПрдХ рд╕рд░реНрд╡рд░ рд╣реИ рдЬреЛ рдЗрди рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред рдмрд┐рдирд╛ рдХрд┐рд╕реА рдорд╛рдирдХреАрдХрд░рдг рдХреЗ рдпрд╣ рд╕рдм рд░реЛрд▓ рдЖрдЙрдЯ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХрдИ рд╕рд░реНрд╡рд░реЛрдВ рдХреЛ рд╕реНрдХреЗрд▓ рдХрд░рдирд╛ рдФрд░ рднреА рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рдбреЙрдХрд░ рд╣рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рдпрд╣ рдкреИрдХреЗрдЬрд┐рдВрдЧ, рд╡рд┐рддрд░рдг рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдирдХ рдмрди рдЧрдпрд╛ рд╣реИред

рдбреЙрдХрд░ рд╣рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рдХреА рд╕реНрдерд┐рд░рддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддреЗ рд╣реБрдП, рдПрдХ рдЕрд▓рдЧ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпрд╛ рд╕реЗрд╡рд╛ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдПрдХ рдЖрдЗрд╕реЛрдореЙрд░реНрдлрд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо Nuxt.js рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ Vue.js рдФрд░ Node.js рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╣рдореЗрдВ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ (SSR) рдХреЗ рд╕рд╛рде рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред

рдпрд╣ рдкрд╕рдВрдж рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд╕рдВрдж рдХреЗ рдХрд╛рд░рдг рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрд╕реА рддрд░рд╣, рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдврд╛рдВрдЪреЗ рдХреЛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Next.js.

рд╣рдо рдкрд╣рд▓реА рдЫрд╡рд┐ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдВрджрд░ рдкреЛрд░реНрдЯ рдФрд░ рд╣реЛрд╕реНрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рд╣рдо рдкреИрдХреЗрдЬ рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдирдпрд╛ рдЕрдиреБрднрд╛рдЧ рдЬреЛрдбрд╝рдХрд░ред

"config": { "nuxt": { "host": "0.0.0.0", "port": "3000" } } 

рдЖрдЧреЗ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдбреЙрдХрдЯрд░, рдбреЙрдХ-рдХрдореНрдкреЛрдЬрд╝ рдФрд░ рдПрдХ рдЦреБрд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдкрд╛рджрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдПрдХ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдмрдирд╛рдПрдВ, рдЬрд┐рд╕реЗ рд╣рдо рд░реВрдЯ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред

рд╣рдореЗрдВ Node.js рд╕рдВрд╕реНрдХрд░рдг 10 рдЫрд╡рд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрд▓реНрдкрд╛рдЗрди рдХреЗ рд╣рд▓реНрдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 FROM node:10-alpine 

рдлрд┐рд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░реЗрдВ:

 ENV APP_ROOT /web 

рдХрд╛рд░реНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рд╕реНрд░реЛрдд рдЬреЛрдбрд╝реЗрдВ:

 WORKDIR ${APP_ROOT} ADD . ${APP_ROOT} 

рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ:

 RUN npm ci RUN npm run build 

рдФрд░ рд╣рдо рдЫрд╡рд┐ рдХреЗ рдЕрдВрджрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрдорд╛рдВрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

 CMD ["npm", "run", "start"] 

Dockerfile
 FROM node:10-alpine ENV APP_ROOT /web ENV NODE_ENV production WORKDIR ${APP_ROOT} ADD . ${APP_ROOT} RUN npm ci RUN npm run build CMD ["npm", "run", "start"] 


рдЙрд╕рдХреЗ рдмрд╛рдж, рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдлрд╝реЛрд▓реНрдбрд░ рдЦреЛрд▓реЗрдВ рдФрд░ рдЫрд╡рд┐ рдПрдХрддреНрд░ рдХрд░реЗрдВ:

 docker build -t registry.gitlab.com/vik_kod/nuxtjs_docker_example . 

рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐ рдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдПрдБ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

 docker run -p 3000:3000 registry.gitlab.com/vik_kod/nuxtjs_docker_example 

рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ : 3000, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:



рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! рд╣рдордиреЗ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ред

рд▓рдХреНрд╖реНрдп рд╕рд░реНрд╡рд░ рдкрд░ рддреИрдпрд╛рд░ рдЕрд╕реЗрдВрдмрд▓реА рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдм рд╣рдореЗрдВ рдбреЙрдХрдЯрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЫрд╡рд┐ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдпрд╛ рддреЛ рд╕реНрд╡-рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рднрдВрдбрд╛рд░ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ hub.docker.com ред

рдореИрдВ gitlab рдореЗрдВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдБрдЧрд╛, рд╡рд╣рд╛рдБ docker рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╡рд╛рд▓реЗ рдЯреИрдм рдХреЛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдмрдирд╛рдИ рдереА, рдЗрд╕рд▓рд┐рдП рдЕрдм рдореИрдВ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ:

 docker push registry.gitlab.com/vik_kod/nuxtjs_docker_example 

рдЫрд╡рд┐ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмреВрдЯ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк VPS рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ,
рдореЗрд░рд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:

  • 1 рдЬреАрдмреА рд░реИрдо
  • 4 рдХреЛрд░
  • 30 рдЬреАрдмреА рдбреНрд░рд╛рдЗрд╡

рдореИрдВрдиреЗ рд╕рд░реНрд╡рд░ рдмрдирд╛рддреЗ рд╕рдордп рддреБрд░рдВрдд docker рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рднреА рд▓рд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЗ VPS рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ ред

рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдбреЙрдХрдЯрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдЧрд┐рдЯрд▓реИрдм рд╣реИ:

 docker login registry.gitlab.com 

рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рдмрд╛рдж, рд╣рдо рдкрд╣рд▓реЗ рджреЗрдЦреЗ рдЧрдП рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 docker run -p 3000:3000 registry.gitlab.com/vik_kod/nuxtjs_docker_example 



рдЫрд╡рд┐ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рд╢реБрд░реВ рд╣реЛ рдЧрдИ рд╣реИ, рдЖрдЗрдП рджреЗрдЦреЗрдВ:



рд╣рдо рдПрдХ рдкрд░рд┐рдЪрд┐рдд рддрд╕реНрд╡реАрд░ рджреЗрдЦрддреЗ рд╣реИрдВ, рд╣рдордиреЗ рдХрдВрдЯреЗрдирд░ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡рд░ рдкрд░ред

рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢ рдмрдирд╛ рд░рд╣рд╛, рдЕрдм рдЬрдм рдЯрд░реНрдорд┐рдирд▓ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЫрд╡рд┐ рдХреЛ рд░реЛрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП -d рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред
рдмрдВрдж рдХрд░реЛ рдФрд░ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдВ:

 docker run -d -p 3000:3000 registry.gitlab.com/vik_kod/nuxtjs_docker_example 

рдЕрдм рд╣рдо рдЯрд░реНрдорд┐рдирд▓ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд╛рд░реНрдп рдХрд░ рд░рд╣рд╛ рд╣реИред

рд╣рдордиреЗ рд╡рд╣ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЬреЛ рдЬрд░реВрд░реА рдерд╛ - рд╣рдордиреЗ рдбреЙрдХрдЯрд░ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдФрд░ рдЕрдм рдпрд╣ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдЫрд╡рд┐ рдФрд░ рдПрдХ рдмрдбрд╝реЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред

рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдЬреЛрдбрд╝реЗрдВ


рд╡рд░реНрддрдорд╛рди рдЪрд░рдг рдореЗрдВ, рд╣рдо рд╕рд░рд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ API рдХреЛ рдПрдХ рд╣реА рдбреЛрдореЗрди рдкрд░ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдЯреЗрдЯрд┐рдХреНрд╕ рдХреЛ Node.js рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ рджреЗрдВ?

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

рдРрд╕реЗ рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо nginx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рдпрджрд┐ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВ рддреЛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдПрдХ рдирдпрд╛ рдЦрд╛рд▓реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ, рдЬрд┐рд╕рдХреЗ рдореВрд▓ рдореЗрдВ рд╣рдо docker-compose.yml рдлрд╝рд╛рдЗрд▓ рдФрд░ nginx рдлрд╝реЛрд▓реНрдбрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

Docker-compose.yml рдореЗрдВ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

 version: "3.3" #      services: #  , nginx nginx: image: nginx:latest #   80  http  443  https ports: - "80:80" - "443:443" #      container_name: proxy_nginx volumes: #   nginx ,      - ./nginx:/etc/nginx/conf.d #            - ./logs:/var/log/nginx/ #   Nuxt.js  nuxt: #     image: registry.gitlab.com/vik_kod/nuxtjs_docker_example container_name: nuxt_app #        ports: - "3000:3000" 

рдиреЗрдЧрдиреЗрдХреНрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ, рдЬрд┐рд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ Nuxt.js рджреНрд╡рд╛рд░рд╛ рдорд╛рдореВрд▓реА рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рдЕрдиреБрд╢рдВрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

nginx.conf
 map $sent_http_content_type $expires { "text/html" epoch; "text/html; charset=utf-8" epoch; default off; } server { root /var/www; listen 80; #    nginx server_name localhost; #   ip  gzip on; gzip_types text/plain application/xml text/css application/javascript; gzip_min_length 1000; location / { expires $expires; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 1m; proxy_connect_timeout 1m; #   ,       # docker-compose        ,    nuxt_app proxy_pass http://nuxt_app:3000; } } 


рд╣рдо рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

 docker-compose up 



рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╢реБрд░реВ рд╣реБрдЖ, рдЕрдм рдЕрдЧрд░ рд╣рдо рдЙрд╕ рдкрддреЗ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдирдЧреАрдирдХреНрд╕, рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рд╕реБрди рд░рд╣рд╛ рд╣реИ - рд╣рдо рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ, рддреЛ рдХреЛрдИ рджреГрд╢реНрдп рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдм рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдирдЧрдгрдХреНрд╕ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рдпрдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрд╡рд╛рдПрдВ рдпрд╛ рд╕реНрдЯреЗрдЯрд┐рдХреНрд╕ рдирд╣реАрдВ рд╣реИрдВ, рдЪрд▓реЛ рдПрдХ рд╕реНрдерд┐рд░ рдлрд╝реЛрд▓реНрдбрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдХреБрдЫ рдЫрд╡рд┐ рдбрд╛рд▓реЗрдВрдЧреЗред

рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдореЗрдВ рдПрдХ рд▓рд╛рдЗрди рдЬреЛрдбрд╝рдХрд░ рдЗрд╕реЗ рдирдЧрдиреЗрдХреНрд╕ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ:

 ... container_name: proxy_nginx volumes: #     - ./static:/var/www/static ... 

рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЧрдП рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬ
 version: "3.3" #      services: #  , nginx nginx: image: nginx:latest #   80  http  443  https ports: - "80:80" - "443:443" #      container_name: proxy_nginx volumes: #   nginx ,      - ./nginx:/etc/nginx/conf.d #            - ./logs:/var/log/nginx/ #     - ./static:/var/www/static #   Nuxt.js  nuxt: #     image: registry.gitlab.com/vik_kod/nuxtjs_docker_example container_name: nuxt_app #         ports: - "3000:3000" 


рдлрд┐рд░ nginx.conf рдореЗрдВ рдирдпрд╛ рд╕реНрдерд╛рди рдЬреЛрдбрд╝реЗрдВ:

 location /static/ { try_files $uri /var/www/static; } 

Nginx.conf рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛
 map $sent_http_content_type $expires { "text/html" epoch; "text/html; charset=utf-8" epoch; default off; } server { root /var/www; listen 80; #    nginx server_name localhost; #   ip  gzip on; gzip_types text/plain application/xml text/css application/javascript; gzip_min_length 1000; location / { expires $expires; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 1m; proxy_connect_timeout 1m; #   ,       # docker-compose        ,    nuxt_app proxy_pass http://nuxt_app:3000; } location /static/ { try_files $uri /var/www/static; } } 


рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬрд╝ рдХрд░реЗрдВ:

 docker-compose up --build 

рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ / рд╕реНрдЯреЗрдЯрд┐рдХ / рдбреЗрдореЛ.рдЬреЗрдкреАрдЬреА рдкрд░ рдЬрд╛рдПрдВ




рдЕрдм рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ Nginx рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджрд┐рдП рдЧрдП рд╣реИрдВ, рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ Node.js рд╕реЗ рд▓реЛрдб рд╣рдЯрд╛ рд░рд╣реЗ рд╣реИрдВред

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЖрдк рд╕рд░реНрд╡рд░ рдкрд░ рд╣рдорд╛рд░реА рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдмрдирд╛рдКрдВрдЧрд╛ред рдкрд╣рд▓реЗ рд▓реЙрдЧ рдФрд░ рд╕реНрдерд┐рд░ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ .gitignore рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рд╕рд░реНрд╡рд░ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХреНрд▓реЛрди рдХрд░рддреЗ рд╣реИрдВред



рдЕрд╕реЗрдВрдмрд▓реА рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рд▓реЗ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛, рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдЯрд░реНрдорд┐рдирд▓ рдкрд░ рдЬрд╛рдПрдБ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП scp рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

 scp -r /Users/vik_kod/PhpstormProjects/nuxtjs_docker_proxy_example/static root@5.101.48.172:/root/example_app/ 

рдпрджрд┐ рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдХреА рдорд╛рддреНрд░рд╛ рдмрдбрд╝реА рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдирд╛ рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд░реВрдк рдореЗрдВ рднреЗрдЬрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдирдкреИрдХ рдХрд░реЗрдВред рдЕрдиреНрдпрдерд╛, рдбрд╛рдЙрдирд▓реЛрдб рдореЗрдВ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред

рд╣рдо рд╕рд░реНрд╡рд░ рдкрд░ рдЯрд░реНрдорд┐рдирд▓ рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ рдФрд░ рдХреНрд▓реЛрди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рдХрдорд╛рдВрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ:

 docker-compose up -d 

рдЯрд░реНрдорд┐рдирд▓ рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рдПрдВ:




рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдордиреЗ рд╕реНрдЯреЗрдЯрд┐рдХреНрд╕ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЕрд▓рдЧ рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдЖрдЧреЗ рдХреЗ рдХрджрдо


рдКрдкрд░ рд╣рдордиреЗ рдЬреЛ рдХреБрдЫ рднреА рдХрд┐рдпрд╛ рд╣реИ, рд╡рд╣ рдХрд╛рдлреА рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдЪреАрдЬреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдиреАрдЪреЗ рдПрдХ рдЫреЛрдЯреА рд╕реВрдЪреА рд╣реИ рдХрд┐ рдЖрдк рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

  • рдбреЗрдЯрд╛ рдХреЗрд╡рд▓ рд╕реНрдерд┐рд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреНрд╖реЗрддреНрд░реЛрдВ, рдПрд╕рдкреАрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░
  • рдЫрд╡рд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрд╡рд╛рдПрдВ, рдЙрджрд╛рд╣рд░рдг
  • рд╕реАрдЖрдИ / рд╕реАрдбреА рдХрд╛ рдПрдХреАрдХрд░рдг, рдЪрдпрдирд┐рдд рд╢рд╛рдЦрд╛ рдХреЛ рдзрдХреНрдХрд╛ рджреЗрдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЫрд╡рд┐ рдХреА рдЕрд╕реЗрдВрдмрд▓реА, рд╕рд╛рде рд╣реА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЕрдкрдбреЗрдЯрд┐рдВрдЧ рдФрд░ рдкреБрдирд░рд╛рд░рдВрдн рд╕реЗрд╡рд╛рдПрдВ
  • рд▓реЛрдб рд╕рдВрддреБрд▓рди рдФрд░ рдЖрд╕рд╛рди рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП 1 рд╕реЗ рдЕрдзрд┐рдХ рд╕рд░реНрд╡рд░ рд╣реЛрдиреЗ рдкрд░ рдХреБрдмреЗрд░рдиреЗрдЯ рдпрд╛ рдЭреБрдВрдб рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдПрдВ

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░


  • рд╣рдордиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдФрд░ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред
  • рд╣рдореЗрдВ рдбреЙрдХрдЯрд░ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдФрд░ рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛ рдХреИрд╕реЗ рд▓рдкреЗрдЯрдирд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ред
  • рд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдФрд░ рдХреНрдпрд╛ рдХрджрдо рдЙрдард╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╕реНрд░реЛрдд рдХреЛрдб


рдЖрд╡реЗрджрди
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди

рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдиреЗ рдЖрдкрдХреА рдорджрдж рдХреА!

Source: https://habr.com/ru/post/hi438862/


All Articles