Dodeer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Node.js рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдХрдВрдЯреЗрдирд░реАрдХрд░рдг

рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд▓реЗрдЦрдХ, рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЖрдЬ рд╣рдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ DevOps рдЗрдВрдЬреАрдирд┐рдпрд░ рд╣реИред рд╡рд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕реЗ рдбреЙрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рдХрдВрдЯреЗрдирд░ рдкреНрд░рдмрдВрдзрди рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо Node.js рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЪрд░рдгреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреЙрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдПрдХ рддрдХрдиреАрдХ, рдЬреЛ рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдмреЗрд╣рдж рд▓реЛрдХрдкреНрд░рд┐рдп рд░рд╣реА рд╣реИ, рдЖрдкрдХреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдиреЛрдбреНрд╕.рдЬреИрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

рдЫрд╡рд┐

рдЕрдм рд╣рдо рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдбреЙрдХрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдИ рд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдордВрдЪ рдХреЛ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдПрдХ рд╣реА рд╕рд╛рдордЧреНрд░реА рдореБрдЦреНрдп рд░реВрдк рд╕реЗ Node.js рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдбреЛрдХрд░ рдХреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЙрдкрдпреЛрдЧ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИред

рдХрд░реНрддрд╛ рдХреНрдпрд╛ рд╣реИ?


рдбреЙрдХрд░ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ рдЬрд┐рд╕реЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕реНрддрд░ (рдХрдВрдЯреЗрдирд░реАрдХрд░рдг) рдкрд░ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рджрд┐рд▓ рдореЗрдВ рд╕реНрддрд░рд┐рдд рдЪрд┐рддреНрд░ рд╣реИрдВред рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ рддреЛ рдбреЙрдХрд░ рдПрдХ рдРрд╕рд╛ рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЙрди рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдиреЗ, рддреИрдирд╛рдд рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рд╡реЗ рдЪрд▓рддреЗ рд╣реИрдВред рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЖрдзрд╛рд░ рдУрдПрд╕ рдХреА рдПрдХ рдЫрд╡рд┐ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрд╡рдпрдВред рдпрджрд┐ рдПрдХ рд╣реА рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдХрдИ рдХрдВрдЯреЗрдирд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдПрдХ рд╕рд╛рде рдЗрд╕ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдИ рдЧрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдкреИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо Node.js. рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ

Node.js рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛


рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдПрдХ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ Node.js рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреИрдХ рдХрд░реЗрдВ, рд╣рдореЗрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЪрд▓реЛ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ package.json рдлрд╝рд╛рдЗрд▓ рд╣реИ:

 { "name": "node-app", "version": "1.0.0", "description": "The best way to manage your Node app using Docker", "main": "index.js", "scripts": {   "start": "node index.js" }, "author": "Ankit Jain <ankitjain28may77@gmail.com>", "license": "ISC", "dependencies": {   "express": "^4.16.4" } } 

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, npm install рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБред рдЗрд╕ рдЖрджреЗрд╢ рдХреЗ рджреМрд░рд╛рди, рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, package-lock.json рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреАред рдЕрдм index.js рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рд╣реЛрдЧрд╛:

 const express = require('express'); const app = express(); app.get('/', (req, res) => { res.send('The best way to manage your Node app using Docker\n'); }); app.listen(3000); console.log('Running on http://localhost:3000'); 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рд╣рдордиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рд░реНрд╡рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдХреБрдЫ рдкрд╛рда рджреЗрддрд╛ рд╣реИред

Dockerfile рдмрдирд╛рдПрдВ


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

Dockerfile рдПрдХ рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП Docker рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢, рдпрджрд┐ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдПрдХ рдмрд╣реБ-рд╕реНрддрд░реАрдп рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреА рдкрд░рддреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╣реИ рдЬреЛ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдбреЙрдХрд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЗрдореЗрдЬ рд▓реЗрдпрд░ рдХреЛ рдХреИрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рдХреИрд╢ рдореЗрдВ рдореМрдЬреВрдж рд▓реЗрдпрд░реНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдпреВрдЬ рдХрд░рддреЗ рд╣реБрдП рдЗрдореЗрдЬ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреЗрдЬ рдХрд░ рджреЗрддрд╛ рд╣реИред

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

рдПрдХ рдЦрд╛рд▓реА рдбреЙрдХрд░реАрдлрд╛рдЗрд▓ рдмрдирд╛рдПрдВ:

 touch Dockerfile 

рдЪреВрдВрдХрд┐ рд╣рдо Node.js рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реА рдЪреАрдЬрд╝ рдЬреЛ рд╣рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд░рдЦрдиреА рд╣реЛрдЧреА, рд╡рд╣ рд╣реИ рдореВрд▓ рдиреЛрдб рдЗрдореЗрдЬ, рдЬреЛ рдбреЙрдХрд░ рд╣рдм рдкрд░ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред рд╣рдо Node.js. рдХреЗ LTS рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдХрд╛ рдкрд╣рд▓рд╛ рдмрдпрд╛рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдерди рд╣реЛрдЧрд╛:

 FROM node:8 

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВред рдЙрд╕реА рд╕рдордп, рдпрд╣рд╛рдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП ARG рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдХрдВрдЯреЗрдирд░ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рджреМрд░рд╛рди /app рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХрд╛ рдирд╛рдо /app рдЕрд▓рд╛рд╡рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдЗрд╕ рдореИрдиреБрдЕрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдБ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

 #   ARG APP_DIR=app RUN mkdir -p ${APP_DIR} WORKDIR ${APP_DIR} 

рдЪреВрдВрдХрд┐ рд╣рдо рдиреЛрдб рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Node.js рдФрд░ npm рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдЫрд╡рд┐ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреНрдпрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред --production рдлрд╝реНрд▓реИрдЧ (рдпрд╛ рдЕрдЧрд░ NODE_ENV рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ NODE_ENV рдХреЛ production рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП --production рдлрд╝рд╛рдЗрд▓ рдХреЗ devDependencies рд╕реЗрдХреНрд╢рди рдореЗрдВ рд▓рд┐рд╕реНрдЯ рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЛ рдЗрдВрд╕реНрдЯрд╛рд▓ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

 #   COPY package*.json ./ RUN npm install #     # RUN npm install --production 

рдпрд╣рд╛рдВ рд╣рдо package*.json рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЫрд╡рд┐ рдХреА рдирдХрд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рд╣рдо рдРрд╕рд╛ рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдбреЙрдХрд░реАрдлрд╛рдЗрд▓ RUN , COPY рдФрд░ ADD рдирд┐рд░реНрджреЗрд╢ рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрдореЗрдЬ рд▓реЗрдпрд░реНрд╕ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдбреЙрдХрд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд▓реЗрдпрд░реНрд╕ рдХреЗ рдХреИрд╢рд┐рдВрдЧ рдлреАрдЪрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдЕрдЧрд▓реА рдмрд╛рд░ рдЬрдм рд╣рдо рдПрдХ рд╕рдорд╛рди рдЫрд╡рд┐ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдбреЙрдХрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреИрд╢ рдореЗрдВ рдореМрдЬреВрдж рдЫрд╡рд┐ рдкрд░рддреЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдпрд╣ рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ, рдЙрд╕рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдЧрд╛ред рдкрд░рддреЛрдВред рдпрд╣ рдЖрдкрдХреЛ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди рдкрд░рддреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдореЗрдВ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд╕рдордп рдмрдЪрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдПрдирдкреАрдПрдо рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

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

COPY рд╕рд╛рде рддреБрд▓рдирд╛ рдореЗрдВ ADD рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рдЬреЛ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдореЗрд╢рд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо .tar рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдХреЛ рдЕрдирдкреИрдХ рдХрд░рдиреЗ рдФрд░ URL рджреНрд╡рд╛рд░рд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред

 #    COPY . . 

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

 #   ,      EXPOSE 3000 

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

 #   CMD ["npm", "start"] 

рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╕рдорд╛рдкреНрдд рдбреЙрдХрд░реАрдлрд╛рдЗрд▓ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛:

 FROM node:8 #   ARG APP_DIR=app RUN mkdir -p ${APP_DIR} WORKDIR ${APP_DIR} #   COPY package*.json ./ RUN npm install #     # RUN npm install --production #    COPY . . #   ,      EXPOSE 3000 #   CMD ["npm", "start"] 

рдЫрд╡рд┐ рд╡рд┐рдзрд╛рдирд╕рднрд╛


рд╣рдордиреЗ рдПрдХ Dockerfile рдлрд╝рд╛рдЗрд▓ рддреИрдпрд╛рд░ рдХреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд░рдирд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд╛рд▓рд╛ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝реЙрд░реНрдо рдХреА рдПрдХ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдЫрд╡рд┐ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ:

 docker build --build-arg <build arguments> -t <user-name>/<image-name>:<tag-name> /path/to/Dockerfile 

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 docker build --build-arg APP_DIR=var/app -t ankitjain28may/node-app:V1 . 

Dockerfile рдХрд╛ ARG рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╣реИ рдЬреЛ рддрд░реНрдХ APP_DIR рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╣рдо рдЗрд╕рдХрд╛ рдЕрд░реНрде рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЙрд╕ рдорд╛рди рдХреЛ рд▓реЗ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдЙрд╕реЗ рдлрд╛рдЗрд▓ рдореЗрдВ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд╣ рд╣реИ - app ред

рдЫрд╡рд┐ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдбреЙрдХрд░ рдЗрд╕реЗ рджреЗрдЦрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:

 docker images 

рдЗрд╕ рдЖрджреЗрд╢ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ, рд▓рдЧрднрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


рдбреЙрдХрдЯрд░ рдЫрд╡рд┐рдпрд╛рдВ

рдЫрд╡рд┐ рд▓реЙрдиреНрдЪ


рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдХрдВрдЯреЗрдирд░ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

 docker run -p <External-port:exposed-port> -d --name <name of the container> <user-name>/<image-name>:<tag-name> 

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 docker run -p 8000:3000 -d --name node-app ankitjain28may/node-app:V1 

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

 docker ps 

рдЗрд╕рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ, рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рддрд░рд╣ рдХреБрдЫ рдЖрдЙрдЯрдкреБрдЯ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:


рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░

рдЕрдм рддрдХ, рд╕рдм рдХреБрдЫ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдордиреЗ рдЕрднреА рддрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИред рдЕрд░реНрдерд╛рддреН, рд╣рдорд╛рд░реЗ рдХрдВрдЯреЗрдирд░, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо node-app , рдкреЛрд░реНрдЯ 8000 рдкрд░ рд╕реБрдирддрд╛ рд╣реИред рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ localhost:8000 рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ localhost:8000 ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 curl -i localhost:8000 

рдЕрдЧрд░ рдХрдВрдЯреЗрдирд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдХрдорд╛рдВрдб рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдХреГрддрд┐ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдХреБрдЫ рдЬреИрд╕рд╛ рд╣реЛрдЧрд╛ред


рдХрдВрдЯреЗрдирд░ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдкрд░рд┐рдгрд╛рдо

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

рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ


рдбреЙрдХрд░ рдХреА рд╢рдХреНрддрд┐ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдФрд░ рдпрдерд╛рд╕рдВрднрд╡ рдХреЙрдореНрдкреИрдХреНрдЯ рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреБрдЫ рд╕реБрдЭрд╛рд╡ рджрд┐рдП рдЧрдП рд╣реИрдВред

тЦН1ред рд╣рдореЗрд╢рд╛ рдПрдХ .dockerignore рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ


рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд┐рд╕реЗ рдЖрдк рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдПрдХ .dockerignore рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ .dockerignore рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдирдХреА рдЫрд╡рд┐ рдмрдирд╛рддреЗ рд╕рдордп рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рд╣рдо рддрдерд╛рдХрдерд┐рдд рдмрд┐рд▓реНрдб рд╕рдВрджрд░реНрдн рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рдЫрд╡рд┐ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ, рдЗрд╕рдореЗрдВ рдпрд╣ рдПрдХ .gitignore рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рдорд╛рди рд╣реИред рдЗрд╕рдореЗрдВ .dockerignore рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рдЬреЛрдбрд╝рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЧрдИ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг Docker /.git рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ /.git , рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдмрдбрд╝реА рд╕рд╛рдордЧреНрд░реА (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди) рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдЫрд╡рд┐ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдЗрд╕рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдПрдХ рдЫрд╡рд┐ рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рд╕реЗ рдмрд╣реБрдд рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

тЦН2ред рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЬ рдЗрдореЗрдЬ рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрдм рд╣рдо рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЧрдарди рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрдИ npm рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдРрд╕рд╛ рдкреИрдХреЗрдЬ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рд╡рд╣ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЗрди рд╕рднреА рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЛ рдХрд░рдиреЗ рд╕реЗ рдЫрд╡рд┐ рдХреЛ рдЕрд╕реЗрдВрдмрд▓ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдбреЙрдХрд░реНрд╕ рдХреА рдХреИрд╢рд┐рдВрдЧ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдЗрддрдиреА рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ)ред рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╡рд╛рд▓реЗ рдкрд░рд┐рдгрд╛рдореА рдЫрд╡рд┐ рдХрд╛рдлреА рдмрдбрд╝реА рд╣реИред рдпрд╣рд╛рдВ, рдЕрдЧрд░ рд╣рдо рдлреНрд░рдВрдЯ-рдПрдВрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рдо рдпрд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рд╡реЗрдмрдкреИрдХ рдЬреИрд╕реЗ рдмрдВрдбрд▓рд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдмрд┐рдХреНрд░реА рдкреИрдХреЗрдЬ рдореЗрдВ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЬрд░реВрд░рдд рдХреЗ рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреИрдХ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдРрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рдлрд╛рдЗрд▓реЗрдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИрдВред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рд╣реА рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рдРрд╕реА рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рд╢рд╕реНрддреНрд░, рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

 #   COPY package*.json ./ RUN npm install --production # - COPY . . RUN npm run build:production #    npm- RUN rm -rf node_modules 

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

 #      COPY . . #  ,      RUN npm install --production && npm run build:production && rm -rf node_module 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ RUN рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╣реИ рдЬреЛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ node_modules рдкреНрд░реЛрдЬреЗрдХреНрдЯ node_modules , рдФрд░ node_modules рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░ рдЙрд╕ рдЫрд╡рд┐ рдХреЗ рдЖрдХрд╛рд░ рдЬрд┐рддрдирд╛ рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ node_modules рдлрд╝реЛрд▓реНрдбрд░ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╣рдо рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВред рд╕рдЪ рд╣реИ, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЗрд╕ рдорд╛рдпрдиреЗ рдореЗрдВ рдмреБрд░рд╛ рд╣реИ рдХрд┐ рдПрдирдкреАрдПрдо рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдЖрдк рдЫрд╡рд┐рдпреЛрдВ рдХреА рдмрд╣реБ-рдЪрд░рдг рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреА рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдЦрд╛рдореА рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдо рдПрдХ рдлреНрд░рдВрдЯрдПрдВрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВ, рдФрд░ рд╣рдо рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рд╣рдо рдЫрд╡рд┐ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдмрд╣реБ-рдЪрд░рдг рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ ред

 FROM node:8 As build #  RUN mkdir /app && mkdir /src WORKDIR /src #   COPY package*.json ./ RUN npm install #     # RUN npm install --production #       COPY . . RUN npm run build:production #    ,     FROM node:alpine #      build   app COPY --from=build ./src/build/* /app/ ENTRYPOINT ["/app"] CMD ["--help"] 

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЫрд╡рд┐ рдкрд┐рдЫрд▓реА рдЫрд╡рд┐ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЫреЛрдЯреА рд╣реИ, рдФрд░ рд╣рдо node:alpine рдЙрдкрдпреЛрдЧ рднреА рдХрд░рддреЗ рд╣реИрдВ node:alpine рдЫрд╡рд┐, рдЬреЛ рд╕реНрд╡рдпрдВ рдмрд╣реБрдд рдЫреЛрдЯреА рд╣реИред рдФрд░ рдпрд╣рд╛рдВ рдЫрд╡рд┐рдпреЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреА рддреБрд▓рдирд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ node:alpine рдХреА рдЫрд╡рд┐ node:alpine рдХреА рдЫрд╡рд┐ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЫреЛрдЯреА рд╣реИ node:8 ред


рдиреЛрдб рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдЫрд╡рд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛

тЦН3ред рдбреЙрдХрд░ рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рдЕрдкрдиреА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░реНрд╕ рдХреА рдХреИрд╢рд┐рдВрдЧ рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдерд╛ рдЬрдм рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕реЗ рдирд╛рдо package*.json рджреНрд╡рд╛рд░рд╛ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдЫрд╡рд┐ рдХреЗ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рдЕрд╡рд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдареЛрд░рддрд╛ рд╕реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдмреЗрд╕ Ubuntu:16.04 рдЫрд╡рд┐ рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдЫрд╡рд┐ рдореЗрдВ рдбреЙрдХрдПрдлрд╝рд╛рдЗрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдкреИрдХреЗрдЬ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ Ubuntu:16.04 :

 FROM ubuntu:16.04 RUN apt-get update && apt-get install -y \   curl \   package-1 \   .   . 

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

 FROM ubuntu:16.04 RUN apt-get update RUN apt-get install -y \   curl \   package-1 \   .   . 

рдЕрдм, рдЬрдм рдкрд╣рд▓реА рдмрд╛рд░ рдЫрд╡рд┐ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рд╡реИрд╕рд╛ рд╣реА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдХреИрд╢ рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдЕрдм рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдФрд░ рдкреИрдХреЗрдЬ, package-2 рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

 FROM ubuntu:16.04 RUN apt-get update RUN apt-get install -y \   curl \   package-1 \   package-2 \   .   . 

рдЗрд╕ рддрд░рд╣ рдХреЗ рдЖрджреЗрд╢ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, package-2 рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдпрд╛ рдЕрджреНрдпрддрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХреНрдпреЛрдВ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм RUN apt-get update рдЕрдиреБрджреЗрд╢ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ Docker рдХреЛ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдФрд░ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдЕрдиреБрджреЗрд╢ рдХреЗ рдмреАрдЪ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ рдХреИрд╢ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЗрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рд╕реЗ рдкреБрд░рд╛рдирд╛ рд╣реИред рдЬрдм RUN apt-get install рдирд┐рд░реНрджреЗрд╢ RUN apt-get install рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ RUN apt-get install рд╕рд┐рд╕реНрдЯрдо рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд┐рдЫрд▓реЗ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдирд┐рд░реНрджреЗрд╢ рдХреА рддрд░рд╣ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди, рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдпрд╛ рд╕рдВрдХреБрд▓ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ update рдФрд░ install рдХрдорд╛рдВрдб рдХреЛ рдЙрд╕реА RUN рдирд┐рд░реНрджреЗрд╢ рдХреЗ рднреАрддрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреИрд╢рд┐рдВрдЧ рдПрдХ рдорд╣рд╛рди рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд▓рд╛рдкрд░рд╡рд╛рд╣ рдЙрдкрдпреЛрдЧ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддрд╛ рд╣реИред

тЦН4ред рдЫрд╡рд┐ рдкрд░рддреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╕реЗ рдХрдо


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

рдкрд░рд┐рдгрд╛рдо


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

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдпрджрд┐ рдЖрдк Node.js рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдкреЗрд╢реЗрд╡рд░ рд░реВрдк рд╕реЗ Docker рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдкреНрд░рднрд╛рд╡реА рдЙрдкрдпреЛрдЧ рдкрд░ рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред

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


All Articles