рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХрд┐рддрдиреА рдмрд╛рд░ рд╕рд░реНрд╡рд░ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛? рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдереА рдЬреЛ рдпрд╣ рд╕рдм рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд░рддреА рдереАред рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
- рдбреЗрдЯрд╛рдмреЗрд╕ рдбреА рд╕рдВрд╕реНрдХрд░рдг xxx рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
- рд╡реЗрдм рд╕рд░реНрд╡рд░ рдПрди рд╕рдВрд╕реНрдХрд░рдг xx, рдЖрджрд┐ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдкреНрд░рдмрдВрдзрди рд╕рдордп рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдорд╛рдореВрд▓реА рдмрджрд▓рд╛рд╡ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрдо рд╕реЗ рдХрдо:
- рдкреНрд░рддреНрдпреЗрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
- рдЗрди рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
рдРрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд╢реЗрд╖ рдЯреВрд▓ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╡реИрд╕реЗ рднреА, рдкрд░реНрдпрд╛рд╡рд░рдг рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдЖрдЧреЗ рд╡рд┐рдХрд╛рд╕ рдЪрд▓рддрд╛ рд╣реИ, рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдЬрд┐рддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИред
рдКрдкрд░, рдореИрдВрдиреЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдХрд┐ рд╡реЗрдВрдбрд░ рд▓реЙрдХ-рдЗрди рдХреНрдпрд╛ рд╣реИред рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд░реНрд╡рд░-рдкреНрд░рдХрд╛рд░ рдореЗрдВ, рдпрд╣ рдШрдЯрдирд╛ рдПрдХ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдмрди рдЬрд╛рддреА рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ -
рдбреЙрдХрд░ ред рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╕реЗ рдмрдирд╛рдПрдВ, рддреИрдирд╛рдд рдХрд░реЗрдВ рдФрд░ рдЪрд▓рд╛рдПрдВред
/ рдЕрд╕реНрд╡реАрдХрд░рдг: / рдпрд╣ рдбреЙрдХрд░ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╕рд╛рд╣рд┐рддреНрдп рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдбреЛрдХрд░ рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣ рдЙрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реИ рдЬреЛ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреЛрдб.рдЬреЗрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВред
рдореЗрд░реА рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдореБрдЭреЗ рд╡рд┐рд╕реНрддреГрдд рд▓реЗрдЦреЛрдВ рдХреА рдХрдореА рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЬрд┐рд╕рд╕реЗ рд╕рд╛рдЗрдХрд┐рд▓ рдХреА рдХрд╛рдлреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝ рдЧрдИред рдпрд╣ рдкреЛрд╕реНрдЯ рд╡рд┐рд╖рдп рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдХрдореА рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рджреЗрд░ рдХреА рдХреЛрд╢рд┐рд╢ рд╣реИред
рдпрд╣ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдЦрд╛рддреА рд╣реИ?
рд╕рд░рд▓ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдбреЙрдХрд░ рдПрд▓рдПрдХреНрд╕рд╕реА рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдПрдХ рдЕрдореВрд░реНрдд рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдбреЙрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╢реБрд░реВ рдХреА рдЧрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреЗрд╡рд▓ рдЦреБрдж рдХреЛ рдФрд░ рдЙрдирдХреЗ рд╡рдВрд╢ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗред рдРрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдореВрд░реНрдд рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЙрдХрд░ (/ docker рдЫрд╡рд┐ /) рдореЗрдВ рдПрдХ рдЫрд╡рд┐ рдореМрдЬреВрдж рд╣реИред рдбреЙрдХрд░ рдЫрд╡рд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдк рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдФрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдкреВрд░реНрд╡-рд╕реНрдерд╛рдкрд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕, рд╡реЗрдм рд╕рд░реНрд╡рд░ рдФрд░ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╣рдЬрд╛рд░реЛрдВ рддреИрдпрд╛рд░-рдХрд┐рдП рдЧрдП рдбреЙрдХрдЯрд░ рдЪрд┐рддреНрд░ рд╣реИрдВред рдбреЙрдХрд░ рдХрд╛ рдПрдХ рдФрд░ рдлрд╛рдпрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрдореЛрд░реА рдЦрдкрдд рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рдХрд┐рдлрд╛рдпрддреА рдЙрдкрдХрд░рдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИред
рдкрд╛рд╕ рд╣реЛ рдЬрд╛рдУ
рд╣рдо рд▓рдВрдмреЗ рд╕рдордп рддрдХ
рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗред рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд░рд┐рд▓реАрдЬ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреБрдЫ рдХреНрд▓рд┐рдХ / рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдПрдХ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб Node.js рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЛрдХрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рддреИрдирд╛рддреА рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред рдпрд╣рд╛рдБ рдЗрд╕рдХрд╛ рдЖрджрд┐рдо, рд╕реНрд░реЛрдд рдХреЛрдб рд╣реИ:
// index const http = require('http'); const server = http.createServer(function(req, res) { res.write('hello world from Docker'); res.end(); }); server.listen(3000, function() { console.log('server in docker container is started on port : 3000'); });
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреИрдХреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:
- рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди-рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореМрдЬреВрджрд╛ рдЫрд╡рд┐ рд╕реЗ рдПрдХ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдПрдВ рдФрд░ рдЪрд▓рд╛рдПрдВ;
- рддреИрдпрд╛рд░ рдирдореВрдиреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдиреА рдЦреБрдж рдХреА рдЫрд╡рд┐ рдмрдирд╛рдПрдВред
рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдзрд┐рдХ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ node.js рдЫрд╡рд┐ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ:
docker pull node
рдбреЙрдХ рдкреБрд▓ рдХрдорд╛рдВрдб рдбрд╛рдЙрдирд▓реЛрдб рдПрдХ рдбреЙрдХрд░ рдЫрд╡рд┐ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк docker run рдХрдорд╛рдВрдб рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдЫрд╡рд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрдВрдЯреЗрдирд░ рдХреЛ рдмрдирд╛рдПрдЧрд╛ рдФрд░ рдЪрд▓рд╛рдПрдЧрд╛ред
docker run -it -d --rm -v "$PWD":/app -w=/app -p 80:3000 node node index.js
рдпрд╣ рдХрдорд╛рдВрдб index.js рдлрд╝рд╛рдЗрд▓ рд▓реЙрдиреНрдЪ рдХрд░реЗрдЧрд╛, 3000 рдкреЛрд░реНрдЯреНрд╕ рдХреЛ 80 рддрдХ рдореИрдк рдХрд░реЗрдЧрд╛ рдФрд░ рдмрдирд╛рдП рдЧрдП рдХрдВрдЯреЗрдирд░ рдХреА рдЖрдИрдбреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред рдкрд╣рд▓реЗ рд╕реЗ рдмреЗрд╣рддрд░! рд▓реЗрдХрд┐рди рдПрдХ рд╕реАрдПрд▓рдЖрдИ рдкрд░ рдЖрдк рдмрд╣реБрдд рджреВрд░ рдирд╣реАрдВ рдЬрд╛рдПрдВрдЧреЗред рдЖрдЗрдП рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЙрдХрд░реАрдлрд╛рдЗрд▓ рдмрдирд╛рдПрдВред
FROM node WORKDIR /app RUN cp . /app CMD ["node", "index.js"]
рдпрд╣ рдбреЙрдХрд░реАрдлрд╛рдЗрд▓ рдЙрд╕ рдЫрд╡рд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬрд┐рд╕рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдХрдорд╛рдВрдб рдФрд░ рдХреЙрдкреА рдлрд╛рдЗрд▓ рдХрдорд╛рдВрдб рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЫрд╡рд┐ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд▓реЙрдиреНрдЪ рдХреА рдЧрдИ рд╣реИред рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдирд┐рд░реНрдорд┐рдд рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХреМрди рд╕реА рдХрдорд╛рдВрдб рдЪрд▓реЗрдЧреАред
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЗрд╕ рдбреЙрдХрд░реАрдлрд╛рдЗрд▓ рд╕реЗ рдПрдХ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рддреИрдирд╛рдд рдХрд░реЗрдВрдЧреЗ: docker
build -t username / helloworld-with-docker: 0.1.0 ред рдпрд╣ рдХрдорд╛рдВрдб рдПрдХ рдирдИ рдЫрд╡рд┐ рдмрдирд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ
рдпреВрдЬрд╝рд░рдиреЗрдо / рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб-рдЯреВ-рдбреЙрдХ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ 0.1.0 рдЯреИрдЧ рдмрдирд╛рддрд╛ рд╣реИред
рд╣рдорд╛рд░рд╛ рдХрдВрдЯреЗрдирд░ рддреИрдпрд╛рд░ рд╣реИред рд╣рдо рдЗрд╕реЗ рдбреЙрдХ рд░рди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рд╡рд┐рдХреНрд░реЗрддрд╛ рд▓реЙрдХ-рдЗрди рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд▓реЙрдиреНрдЪ рдЕрдм рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реИред рдХреЛрдб рдХреЛ рдбреЙрдХрд░ рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпреЗ рджреЛ рдорд╛рдирджрдВрдб рд╣рдореЗрдВ рдЖрд╡реЗрджрди рдХреЛ рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рди рдкрд░ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдо рдбреЙрдХрд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред
рддреИрдирд╛рддреА
рдкрд╣рд▓реЗ 99% рд╢реЗрд╖ 99% рдХреЗ рд░реВрдк рдореЗрдВ рдЗрддрдиреЗ рднрдпрд╛рдирдХ рдирд╣реАрдВ рд╣реИрдВред
рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕рднреА рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдпрдВ рд╣реА рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдФрд░ рдЖрдкрдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рд╡рд┐рд╖рдп рдмрди рдЬрд╛рддреА рд╣реИред рд╣рдо рдбреЙрдХрд░ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ 2 рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ:
- рдбреЙрдХрд░ рдЫрд╡рд┐ рдХреА рдореИрдиреБрдЕрд▓ рддреИрдирд╛рддреА;
- рдЯреНрд░реИрд╡рд┐рд╕-рд╕реАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рддреИрдирд╛рддреАред
рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЫрд╡рд┐ рдХреЛ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдЙрддреНрдкрд╛рдж рдХрд╛ рдордВрдЪрди рд╕рд░реНрд╡рд░ред
рдореИрдиреБрдЕрд▓ рддреИрдирд╛рддреА
рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЕрдЪреНрдЫрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рд╡рд╛рддрд╛рд╡рд░рдг рдирд╣реАрдВ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдбреЙрдХрд┐рдВрдЧ рдЫрд╡рд┐ рдХреЛ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рд╕реБрд▓рдн рд╕реНрдерд╛рди рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рдбреЙрдХрд╣рд░реНрдм рд╣реЛрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП, рд╡рд╣ рдореБрдлреНрдд рдореЗрдВ рдПрдХ рдирд┐рдЬреА рдЫрд╡рд┐ рднрдВрдбрд╛рд░ рдФрд░ рдЕрд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ DockerHub рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ:
docker login -e username@gmail.com -u username -p userpass
рд╣рдо рдЕрдкрдиреА рдЫрд╡рд┐ рдХреЛ рд╡рд╣рд╛рдВ
рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ:
docker push username / helloworld-with-docker: 0.1.0редрдЕрдЧрд▓рд╛, рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рд╕рд░реНрд╡рд░ рдкрд░ рдЬрд╛рдПрдВ (рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдбреЙрдХрд░ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдкрд░ рдкреНрд░реАрдЗрдВрд╕реНрдЯреЙрд▓реНрдб рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред
рд╕рд░реНрд╡рд░ рдкрд░ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
docker run -d --rm -p 80:3000 username/helloworld-with-docker:0.1.0.
рдФрд░ рд╡рд╣ рд╕рдм рд╣реИ! рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕реНрдерд╛рдиреАрдп рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╣ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ DockerHub рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо / helloworld-with- docker рджрд░реНрдЬ рдХрд░реЗрдВред рдЗрд╕ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЫрд╡рд┐ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕реЗ рд╡рд╣рд╛рдВ рдЕрдкрд▓реЛрдб рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдбреЙрдХрд░ рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред
рдЕрдм, рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдк рдПрдХ рдирдП рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдзрдХреНрдХрд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рд░ рдмрд╛рд░ рд╕рд░реНрд╡рд░ рдкрд░ рдХрдВрдЯреЗрдирд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
PS рдпрд╣ рд╡рд┐рдзрд┐ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рдЯреНрд░реИрд╡рд┐рд╕-рд╕реАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рдЯреНрд░реИрд╡рд┐рд╕-рд╕реАрдЖрдИ рдХреЗ рд╕рд╛рде рддреИрдирд╛рдд рдХрд░реЗрдВ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЯреНрд░реИрд╡рд┐рд╕-рд╕реАрдЖрдИ рдореЗрдВ рдбреЙрдХрд░рд╣рдм рдбреЗрдЯрд╛ рдЬреЛрдбрд╝реЗрдВред рдЙрдиреНрд╣реЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
travis encrypt DOCKER_EMAIL=email@gmail.com travis encrypt DOCKER_USER=username travis encrypt DOCKER_PASS=password
рдлрд┐рд░ рд╣рдо .travis.yml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХреАрдЬ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдирдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдПрдХ рдЯрд┐рдкреНрдкрдгреА рднреА рдЬреЛрдбрд╝реЗрдВрдЧреЗред
env: global: - secure: "UkF2CHX0lUZ...VI/LE=" # DOCKER_EMAIL - secure: "Z3fdBNPt5hR...VI/LE=" # DOCKER_USER - secure: "F4XbD6WybHC...VI/LE=" # DOCKER_PASS
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЫрд╡рд┐ рдХреЛ рд▓реЙрдЧ рдЗрди рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
after_success: - docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS - docker build -f Dockerfile -t username/hello-world-with-travis. - docker tag username/hello-world-with-travis 0.1.0 - docker push username/hello-world-with-travis
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЯреНрд░реИрд╡рд┐рд╕-рд╕реАрдЖрдИ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдЫрд╡рд┐ рд╡рд┐рддрд░рдг рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ;
- ssh рдХрдиреЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ;
- рдСрдирд▓рд╛рдЗрди рддреИрдирд╛рддреА рд╕реЗрд╡рд╛рдПрдВ (рддреИрдирд╛рддреА рдмреАрдУрдЯреА, рддреИрдирд╛рддреА);
- AWS рд╕реАрдПрд▓рдЖрдИ;
- Kubernates;
- рдбреЙрдХрд░ рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгред
рдкрд░рд┐рдгрд╛рдо
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕рд░рд▓ рдиреЛрдб.рдЬреЗрдПрд╕ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЛрдХрд░ рдХреА рддреИрдпрд╛рд░реА рдФрд░ рддреИрдирд╛рддреА рдХреА рдЬрд╛рдВрдЪ рдХреА: рдЯреНрд░реИрд╡рд┐рд╕-рд╕реАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рддред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдиреЗ рдЖрдкрдХреЛ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рд╣реИред