
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдПрдХ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ рд▓рд╛рд░рд╡реЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди "рд░реИрдкрд┐рдВрдЧ" рдХреЗ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рддрд╛рдХрд┐ рдлреНрд░рдВрдЯрдПрдВрдб рдФрд░ рдмреИрдХрдПрдВрдб рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВ, рдФрд░ рдЗрд╕реЗ рдЙрддреНрдкрд╛рджрди рдкрд░ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, CI рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдЯреИрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░, phpunit
рдкрд░реАрдХреНрд╖рдг phpunit
рдФрд░ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛ред
"рдФрд░ рдХреНрдпрд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЬрдЯрд┐рд▓рддрд╛ рд╣реИ?" - рдЖрдк рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╣реА рд╣реЛрдВрдЧреЗред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд░реВрд╕реА-рднрд╛рд╖реА рдФрд░ рдЕрдВрдЧреНрд░реЗрдЬреА-рднрд╛рд╖реА рд╕рдореБрджрд╛рдпреЛрдВ рдореЗрдВ рдХрд╛рдлреА рдЪрд░реНрдЪрд╛рдПрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИрдВ, рдФрд░ рдореИрдВ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рд▓рдЧрднрдЧ рд╕рднреА рдЕрдзреНрдпрдпрди рдХрд┐рдП рдЧрдП рдзрд╛рдЧреЗ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реВрдВрдЧрд╛:
- "рдореИрдВ рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП docker рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВ рд▓рд╛рд░реНрдбреЙрдХ рдбрд╛рд▓рддрд╛ рд╣реВрдБ рдФрд░ рдореИрдВ рдкрд░реЗрд╢рд╛рдирд┐рдпреЛрдВ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реВрдБред" рдХреВрд▓, рд▓реЗрдХрд┐рди рд╕реНрд╡рдЪрд╛рд▓рди рдФрд░ рдЙрддреНрдкрд╛рджрди рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
- "рдореИрдВ
fedora:latest
рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдХрдВрдЯреЗрдирд░ (рдореЛрдиреЛрд▓рд┐рде) рдЗрдХрдЯреНрдард╛ рдХрд░рддрд╛ рд╣реВрдВ fedora:latest
(~ 230 рдПрдордмреА), рдЗрд╕рдореЗрдВ рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ (рдирдЧреНрдиреЗрдХреНрд╕, рдбреАрдмреА, рдХреИрд╢, рдЖрджрд┐) рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХреЗ рдЕрдВрджрд░ рд╕рдм рдХреБрдЫ рдЪрд▓рд╛рддреЗ рд╣реИрдВред" рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЙрддреНрдХреГрд╖реНрдЯ, рд╢реБрд░реВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди "рдПрдХ рдХрдВрдЯреЗрдирд░ - рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛" рдХреА рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рд╕рдВрддреБрд▓рди рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдмрдВрдзрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░ рдХреНрдпрд╛ рд╣реИ? - "рдпрд╣рд╛рдВ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдЯреБрдХрдбрд╝реЗ рд╣реИрдВ, рд╢-рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рдЕрдВрд╢ рдХреЗ рд╕рд╛рде рдореМрд╕рдо, рдЬрд╛рджреВ рдПрдирд╡реА-рдорд╛рди рдЬреЛрдбрд╝реЗрдВ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред" рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЬреАрд╡рд┐рдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдореИрдВ рдХрд╛рдВрдЯрд╛ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦреЗрд▓ рд╕рдХрддрд╛ рдерд╛?
рдиреАрдЪреЗ рдЖрдк рдЬреЛ рднреА рдкрдврд╝рддреЗ рд╣реИрдВ рд╡рд╣ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рдЕрдиреБрднрд╡ рд╣реИ рдЬреЛ рдкрд░рдо рд╕рддреНрдп рд╣реЛрдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрд╢реБрджреНрдзрд┐ рдХреЗ рд╕рдВрдХреЗрдд рдпрд╛ рд╕рдВрдХреЗрдд рд╣реИрдВ - рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рдЕрдзреАрд░ рдХреЗ рд▓рд┐рдП - рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ , рдХреНрд▓реЛрди рдЬрд┐рд╕реЗ рдЖрдк рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд▓рд╛рд░рд╡реЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ "рд▓рд┐рдВрдХ" рдХрд░рдирд╛, рдпрд╛ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ docker-compose.yml
рдХрд┐рд░рд╛рдиреЗ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЗрд╕реЗ рдЙрд╕реА docker-compose.yml
рдкрд░ рдЪрд▓рд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд╣рд┐рд╕реНрд╕рд╛
рд╣рдо рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рдХрд┐рди рдФрдЬрд╛рд░реЛрдВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╣рдо рдХрд┐рд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВрдЧреЗ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдореЗрдЬрдмрд╛рди рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
18.06.1-ce
рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдореИрдВрдиреЗ рд╕рдВрд╕реНрдХрд░рдг 18.06.1-ce
рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛docker-compose
- рдпрд╣ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рддрд╛ рд╣реИ; рд╕рдВрд╕реНрдХрд░рдг 1.22.0
make
- рдЖрдк рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдбреЙрдХрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ
рдЖрдк рдХрдорд╛рдВрдб curl -fsSL get.docker.com | sudo sh
рд╕рд╛рде debian
-рд╕рдорд╛рди рд╕рд┐рд╕реНрдЯрдо рдкрд░ curl -fsSL get.docker.com | sudo sh
рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ curl -fsSL get.docker.com | sudo sh
, рд▓реЗрдХрд┐рди docker-compose
pip
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рд╛рд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдЗрд╕рдХреЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ (рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк apt
рдмрд╣реБрдд рдкреАрдЫреЗ рд╣реИ)ред
рдпрд╣ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рд╕реВрдЪреА рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдЖрдк рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ - phpstorm
, netbeans
рдпрд╛ рдореГрдд vim
- рдпрд╣ рдЖрдкрдХреЗ рдКрдкрд░ рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рдж ( рдЫрд╡рд┐ рд╕реЗ рдореИрдВ рдЗрд╕ рд╢рдмреНрдж рд╕реЗ рдирд╣реАрдВ рдбрд░рддрд╛)
рдкреНрд░рд╢реНрди: рдореВрд▓ рдЫрд╡рд┐ - рдХреМрди рд╕рд╛ рдЪреБрдирдирд╛ рдмреЗрд╣рддрд░ рд╣реИ?
рдПрдХ: рдПрдХ рд╣реИ рдХрд┐ "рдкрддрд▓реА", рдХреЛрдИ рддрд╛рдордЭрд╛рдо рд╣реИред alpine
(~ 5 рдПрдордмреА) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ , рдЖрдк рдЕрдкрдиреА рджрд┐рд▓ рдХреА рдЗрдЪреНрдЫрд╛рдУрдВ рдХреЛ рдЬреЛ рднреА рдЗрдХрдЯреНрдард╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╕реНрд░реЛрдд рд╕реЗ рд╕реЗрд╡рд╛рдУрдВ рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ - jessie-slim
(~ 30 рдПрдордмреА) ред рдпрд╛ рдЙрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░рд╢реНрди: рдЫрд╡рд┐ рд╡рдЬрди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрдпреЛрдВ рд╣реИ?
рдЙ: рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХрдореА, рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рддреНрд░реБрдЯрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдореЗрдВ рдХрдореА (рдХрдо рдбреЗрдЯрд╛ - рдХрдо рд╕рдВрднрд╛рд╡рдирд╛), рдЙрдкрднреЛрдЧ рдХрд┐рдП рдЧрдП рд╕реНрдерд╛рди рдореЗрдВ рдХрдореАред рдирд┐рдпрдо "рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИ" (┬й "рд╕реНрдиреИрдЪ") рдпрд╣рд╛рдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдкреНрд░рд╢реНрди: рд▓реЗрдХрд┐рди рдореЗрд░реЗ рджреЛрд╕реНрдд %friend_name%
рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рд╕рднреА-рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ "рдЕрдЦрдВрдб" рдЫрд╡рд┐ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред
A: рдЪрд▓реЛ рдмрд╕ рдЧрд┐рдирддреА рдХрд░рддреЗ рд╣реИрдВред рдЖрд╡реЗрджрди рдореЗрдВ 3 рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВ - рдкреАрдЬреА, рд░реЗрдбрд┐рд╕, рдкреАрдПрдЪрдкреАред рдФрд░ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдХрд┐ рдпрд╣ рдЗрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмрдВрдбрд▓реЛрдВ рдореЗрдВ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛ред рдкреАрдЬреА - рд╕рдВрд╕реНрдХрд░рдг 9.6 рдФрд░ 10, рд░реЗрдбрд┐рд╕ - 3.2 рдФрд░ 4.0, рдкреАрдПрдЪрдкреА - 7.0 рдФрд░ 7.2ред рдпрджрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрд╕рди рдПрдХ рдЕрд▓рдЧ рдЫрд╡рд┐ рд╣реИ - рддреЛ рдЖрдкрдХреЛ рдЙрдирдореЗрдВ рд╕реЗ 6 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИ рдФрд░ hub.docker.com
рдкрд░ hub.docker.com
ред рдпрджрд┐, рд╡реИрдЪрд╛рд░рд┐рдХ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ "рдкреИрдХ" рдХреА рдЬрд╛рддреА рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдкреЗрди рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ... 8 рдмрд╛рд░? рдЕрдм рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдЖрдк рдЕрднреА рднреА opcache
рд╕рд╛рде рдЦреЗрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЕрдкрдШрдЯрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЧрдИ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдЯреИрдЧ рдореЗрдВ рдмрджрд▓рд╛рд╡ рд╣реИред рдПрдХ рдореЛрдиреЛрд▓рд┐рде рдЪрд▓рд╛рдирд╛ рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╣реАрдВ рдирд╣реАрдВ рд╣реИред
рдХреНрдпреВ: рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдмреБрд░рд╛рдИ рдХреНрдпреЛрдВ рд╣реИ?
A: рдХреНрдпреЛрдВрдХрд┐ PID 1
ред рдпрджрд┐ рдЖрдк рдЬрд╝реЛрдВрдмреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рдмрд╣реБрддрд╛рдпрдд рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЬрд╣рд╛рдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ - рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ "рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ" рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ - рдкреНрд░рддрд┐ рдХрдВрдЯреЗрдирд░ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдПрдХ рдЕрдЬреАрдм рдЕрдкрд╡рд╛рдж рдЕрдкрдиреЗ рд╢реНрд░рдорд┐рдХреЛрдВ рдФрд░ php-fpm
рд╕рд╛рде nginx
, рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд░рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ (рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдиреНрд╣реЗрдВ SIGTERM
рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдореЗрдВ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ, рдХрд╛рдлреА рд╕рд╣реА рдврдВрдЧ рд╕реЗ "рдЕрдкрдиреЗ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдорд╛рд░рдирд╛")ред рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рднреА рд░рд╛рдХреНрд╖рд╕реЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдХреЗ, рдЖрдк рд▓рдЧрднрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рдкреВрд░рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдпреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрд╡рд╛рдж рд╣реИрдВред
рдореБрдЦреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рдпрд╣ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
web|api
- nginx
рдХреЗ рд╕рд╛рде рд╕реНрдереИрддрд┐рдХ рджреЗ, рдФрд░ fpm
рд╕рд╛рде рдЧрддрд┐рд╢реАрд▓ рд╕рд╛рдордЧреНрд░реА рдЙрддреНрдкрдиреНрди fpm
scheduler
- рдореВрд▓ рдХрд╛рд░реНрдп рдЕрдиреБрд╕реВрдЪрдХ рдЪрд▓рд╛рддреЗ рд╣реИрдВqueue
- queue
рд╕реЗ рдиреМрдХрд░рд┐рдпреЛрдВ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛
рдПрдХ рдореВрд▓ рд╕реЗрдЯ рдЬрд┐рд╕реЗ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдм рд╣рдо рдЙрди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП "рдЯреЗрдХ рдСрдл" рдХреЗ рд▓рд┐рдП рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╣реИ (рдЙрдирдХреЗ рдХреЛрдб рдирд╛рдо рдХреЛрд╖реНрдардХ рдореЗрдВ рджрд┐рдП рдЧрдП рд╣реИрдВ):
PHP + PHP-FPM
( рдРрдк ) - рд╡рд╣ рд╡рд╛рддрд╛рд╡рд░рдг рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░рд╛ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЪреВрдВрдХрд┐ PHP рдФрд░ FPM рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реЛрдВрдЧреЗ - рд╣рдо рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЫрд╡рд┐ рдореЗрдВ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдФрд░ рд╕рдВрдХреБрд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рд╕рдорд╛рди рд╣реЛрдЧреАред рдмреЗрд╢рдХ - рдПрдлрдкреАрдПрдо рдФрд░ рдЖрд╡реЗрджрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡рд┐рднрд┐рдиреНрди рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рдЪрд▓реЗрдЧреАnginx
( nginx ) - рдЬреЛ рдХрд┐ nginx рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╡рд┐рддрд░рдг рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ - рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдЫрд╡рд┐ рдПрдХрддреНрд░ рдХрд░реЗрдВрдЧреЗред рдЪреВрдВрдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд╕реЗрд╡рд╛ рд╣реИ, рдЗрд╕рдХреА рдЕрдкрдиреА рдбреЙрдХ рдлрд╝рд╛рдЗрд▓ рдФрд░ рдЗрд╕рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реИ- рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕реНрд░реЛрдд ( рд╕реНрд░реЛрдд ) - рд╕реНрд░реЛрдд рдХреЛ рдПрдХ рдЕрд▓рдЧ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдРрдк рдХреЗ рд╕рд╛рде рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рде рдмрдврд╝рддреЗ
volume
ред рдЖрдзрд╛рд░ рдЫрд╡рд┐ alpine
, рдЕрдВрджрд░ рдХреЗрд╡рд▓ рд╕реНрдерд╛рдкрд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рд╡рд╛рд▓реЗ рд╕реНрд░реЛрдд рд╣реИрдВ рдФрд░ рд╡реЗрдмрдкреИрдХ рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ (рдмрд┐рд▓реНрдб рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдЕрдиреНрдп рд╡рд┐рдХрд╛рд╕ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ hub.docker.com
рд╕реЗ hub.docker.com
; рдЙрддреНрдкрд╛рджрди рдкрд░, рджреВрд╕рд░реА рдУрд░ - рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ, рдХреНрд▓рд╕реНрдЯрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЬреЛ рдХреБрдЫ рднреА рд░рд╣рддрд╛ рд╣реИ рд╡рд╣ рд╣реИ рдЖрд╡реЗрджрди рдХреЛ (рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдЙрд╕ рдкрддреЗ / рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдкрд░ рдФрд░ рдХрд┐рди рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЙрди рдкрд░ рджрд╕реНрддрдХ рджреЗрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреВрд▓рд░ рдХреЛ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛-рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВред
рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рднрд╛рдЧ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдкрд░ рдЬрд╛рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред
рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ
рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдлрд╛рдЗрд▓ рдХрд╛ рдЖрдпреЛрдЬрди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
. тФЬтФАтФА docker # - тФВ тФЬтФАтФА app тФВ тФВ тФЬтФАтФА Dockerfile тФВ тФВ тФФтФАтФА ... тФВ тФЬтФАтФА nginx тФВ тФВ тФЬтФАтФА Dockerfile тФВ тФВ тФФтФАтФА ... тФВ тФФтФАтФА sources тФВ тФЬтФАтФА Dockerfile тФВ тФФтФАтФА ... тФЬтФАтФА src # тФВ тФЬтФАтФА app тФВ тФЬтФАтФА bootstrap тФВ тФЬтФАтФА config тФВ тФЬтФАтФА artisan тФВ тФФтФАтФА ... тФЬтФАтФА docker-compose.yml # Compose- тФЬтФАтФА Makefile тФЬтФАтФА CHANGELOG.md тФФтФАтФА README.md
рдЖрдк рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реЗрд╡рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
$ docker build \ --tag %local_image_name% \ -f ./docker/%service_directory%/Dockerfile ./docker/%service_directory%
рдЕрдВрддрд░ рдХреЗрд╡рд▓ рд╕реВрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдЫрд╡рд┐ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рд╣реЛрдЧрд╛ - рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕рдВрджрд░реНрдн (рдЪрд░рдо рддрд░реНрдХ) рдХреЛ ./src
рд╕реЗрдЯ рдХрд┐рдпрд╛ ./src
рдЪрд╛рд╣рд┐рдПред
рд╕реНрдерд╛рдиреАрдп рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдирд╛рдордХрд░рдг рдХреЗ рдирд┐рдпрдо рдЙрди рд▓реЛрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ %root_directory_name%_%service_name%
docker-compose
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ: %root_directory_name%_%service_name%
ред рдпрджрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЛ my-awesome-project
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕реЗрд╡рд╛ рдХреЛ redis
рдирд╛рдо рджрд┐рдпрд╛ redis
, рддреЛ рдЫрд╡рд┐ рдХрд╛ рдирд╛рдо (рд╕реНрдерд╛рдиреАрдп) рдХреНрд░рдорд╢рдГ my-awesome-project_redis
рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИред
рдмрд┐рд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рдЗрдХрдЯреНрдареЗ рдХреА рдЧрдИ рдЫрд╡рд┐ рдХреЗ рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЙрдХрдЯрд░ рдХреЛ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП, рд▓реЙрдиреНрдЪ --cache-from %full_registry_name%
ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдбреЙрдХрд░ рдбреЗрдореЙрди рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрджреЗрд╢ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рджреЗрдЦреЗрдВрдЧреЗ - рдХреНрдпрд╛ рдпрд╣ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ? рдФрд░ рдпрджрд┐ рдирд╣реАрдВ (рд╣реИрд╢ рдЕрднрд┐рд╕рд░рдг) - рдпрд╣ рдЫрд╡рд┐ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рдкрд░рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЕрдиреБрджреЗрд╢ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдЧрд╛, рдЬрд┐рд╕реЗ рдЖрдк рдЗрд╕реЗ рдХреИрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВрдЧреЗред рдпрд╣ рдмрд╛рдд рдмреБрд░реА рдирд╣реАрдВ рд╣реИ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ :)
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ENTRYPOINT
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдзреНрдпрд╛рди ENTRYPOINT
ред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдРрдк) рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдЫрд╡рд┐ рдХреЛ рдЗрд╕ рддрдереНрдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдпрд╣ рди рдХреЗрд╡рд▓ рдЙрддреНрдкрд╛рджрди рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдмрд▓реНрдХрд┐ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рднреА, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред composer
рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдФрд░ рд╣рдЯрд╛рдирд╛, unit
рдкрд░реАрдХреНрд╖рдг, tail
рд▓реЙрдЧреНрд╕ рдФрд░ рдкрд░рд┐рдЪрд┐рдд рдЙрдкрдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ ( php /app/artisan
тЖТ art
, composer
тЖТ c
) рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ - рдпрд╣ рд╕реАрдЖрдИ рдкрд░ unit
рдЯреЗрд╕реНрдЯ рдФрд░ рд╕реНрдЯреЗрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд░ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ phpstan
) рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдбреЙрдХрдлрд╛рдЗрд▓ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, xdebug
рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди xdebug
, рд▓реЗрдХрд┐рди рдореЙрдбреНрдпреВрд▓ рд╕реНрд╡рдпрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ (рдпрд╣ рдХреЗрд╡рд▓ CI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдХреНрд╖рдо рд╣реИ)ред
composer
hirak/prestissimo
рдкреИрдХреЗрдЬ hirak/prestissimo
рд╕реЗ hirak/prestissimo
, рдЬреЛ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЛ рдмрд╣реБрдд рдмрдврд╝рд╛рддрд╛ рд╣реИред
рдЙрддреНрдкрд╛рджрди рдкрд░, рд╣рдо рдЫрд╡рд┐ рд╕реЗ рд╕реНрд░реЛрддреЛрдВ / рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд╕рд╛рде /src
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЗрд╕рдХреЗ рдЕрдВрджрд░ /app
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЖрд╡реЗрджрди рд╕реНрд░реЛрддреЛрдВ ( -v "$(pwd)/src:/app:rw"
рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ "рд░реЛрд▓ рдУрд╡рд░" рдХрд░рддреЗ рд╣реИрдВред
рдФрд░ рдпрд╣рд╛рдВ рдПрдХ рдЬрдЯрд┐рд▓рддрд╛ рдирд┐рд╣рд┐рдд рд╣реИ - рдпреЗ рдХрдВрдЯреЗрдирд░ рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдЕрдзрд┐рдХрд╛рд░ рд╣реИрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд░реВрдЯ ( root:root
) рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ, рдЗрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ (рдХреИрд╢, рд▓реЙрдЧ, рд╕рддреНрд░, рдЖрджрд┐) рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдлрд╛рдЗрд▓реЗрдВ - рднреА, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк - рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрдирдХреЗ рд╕рд╛рде "рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ" рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рдЖрдк рдЗрд╕реЗ sudo chown -R $(id -u):$(id -g) /path/to/sources
рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ, рдлрд┐рдХреНрд╕рдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ , рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╛рдзрд╛рди рд╕реАрдзрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдореБрдЭреЗ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд╛рдиреАрдп USER_ID
рдФрд░ рдЗрд╕рдХреЗ GROUP_ID
рдХреЛ USER_ID
рдФрд░ рдЗрди рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдирд╛ GROUP_ID
рд╣реБрдЖред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдорд╛рди 1000:1000
(рдкрд╣рд▓реЗ рд╕реНрдерд╛рдиреАрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди) рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдХреЙрд▓ $(id -u):$(id -g)
рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдорд┐рд▓ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рд╣рдореЗрд╢рд╛ рдЙрдиреНрд╣реЗрдВ ( $ USER_ID=666 docker-compose up -d
рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ $ USER_ID=666 docker-compose up -d
) рдпрд╛ .env
рдлрд╛рдЗрд▓ рдореЗрдВ .env
- .env
рдлрд╛рдЗрд▓ .env
ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм php-fpm
рд╕реНрдерд╛рдиреАрдп рд░реВрдк php-fpm
рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ php-fpm
opcache
рд╕реЗ opcache
рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп php-fpm
рди рднреВрд▓реЗрдВ - рдЕрдиреНрдпрдерд╛ "рд╣рд╛рдБ рдХреНрдпрд╛ рд╣реИ!" рдЖрдкрдХреЛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд░реЗрдбрд┐рд╕ рдФрд░ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХреЗ "рдкреНрд░рддреНрдпрдХреНрд╖" рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреЛрд░реНрдЯреНрд╕ рдХреЛ "рдЖрдЙрдЯ" ( 15432
рдФрд░ 15432
рдХреНрд░рдорд╢рдГ) рдлреЗрдВрдХ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ "рдХреНрдпрд╛ рдФрд░ рдХреИрд╕реЗ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИ" рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рджреЗрдЦрдиреЗ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред
рдореИрдВ app
рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкрд╣реБрдВрдЪ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдХрдВрдЯреЗрдирд░ рдХреЛ рдХреЛрдб рдирд╛рдо app
рдЪрд▓рд╛ рд░рд╣рд╛ --command keep-alive.sh
( --command keep-alive.sh
) --command keep-alive.sh
ред
docker-compose
рд╕рд╛рде рд░реЛрдЬрдорд░реНрд░рд╛ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рд╣реИрдВ:
рдЖрдкрд░реЗрд╢рди | рд░рдирд┐рдВрдЧ рдХрдорд╛рдВрдб |
---|
composer рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ | $ docker-compose exec app composer require package/name |
рдЪрд▓ рд░рд╣рд╛ рд╣реИ phpunit | $ docker-compose exec app php ./vendor/bin/phpunit --no-coverage |
рд╕рднреА рдиреЛрдб рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ | $ docker-compose run --rm node npm install |
рдиреЛрдб рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ | $ docker-compose run --rm node npm i package_name |
рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рд▓рд╛рдЗрд╡ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рд╢реБрд░реВ рдХрд░рдирд╛ | $ docker-compose run --rm node npm run watch |
рдЖрдк рд╕рднреА рд▓реЙрдиреНрдЪ рд╡рд┐рд╡рд░рдг docker-compose.yml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЪреЛрдИ рдЬрд╝рд┐рдВрджрд╛ рд╣реИ!
рд╣рд░ рдмрд╛рд░ рдПрдХ рд╣реА рдХрдорд╛рдВрдб рдЯрд╛рдЗрдк рдХрд░рдирд╛ рджреВрд╕рд░реА рдмрд╛рд░ рдХреЗ рдмрд╛рдж рдЙрдмрд╛рдК рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЪреВрдВрдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реНрд╡рднрд╛рд╡ рд╕реЗ рдЖрд▓рд╕реА рдкреНрд░рд╛рдгреА рд╣реЛрддреЗ рд╣реИрдВ, рдЪрд▓реЛ рдЙрдирдХреЗ "рдСрдЯреЛрдореЗрд╢рди" рдореЗрдВ рдЖ рдЬрд╛рдПрдВред sh
рд▓рд┐рдкрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд░рдЦрдирд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХрд▓ Makefile
рд░реВрдк рдореЗрдВ рдЖрдХрд░реНрд╖рдХ рдирд╣реАрдВ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдЖрдзреБрдирд┐рдХ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЗрд╕рдХреА рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдХреЛ рдмрд╣реБрдд рдХрдо рдЖрдВрдХрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕ рдкрд░ рдкреВрд░реНрдг рд░реВрд╕реА-рднрд╛рд╖рд╛ рдореИрдиреБрдЕрд▓ рдЖрдк рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ make
рд░рди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдЬрдбрд╝ рдореЗрдВ рдХреИрд╕реЗ рджрд┐рдЦрддрд╛ рд╣реИ:
[user@host ~/projects/app] $ make help Show this help app-pull Application - pull latest Docker image (from remote registry) app Application - build Docker image locally app-push Application - tag and push Docker image into remote registry sources-pull Sources - pull latest Docker image (from remote registry) sources Sources - build Docker image locally sources-push Sources - tag and push Docker image into remote registry nginx-pull Nginx - pull latest Docker image (from remote registry) nginx Nginx - build Docker image locally nginx-push Nginx - tag and push Docker image into remote registry pull Pull all Docker images (from remote registry) build Build all Docker images push Tag and push all Docker images into remote registry login Log in to a remote Docker registry clean Remove images from local registry --------------- --------------- up Start all containers (in background) for development down Stop all started for development containers restart Restart all started for development containers shell Start shell into application container install Install application dependencies into application container watch Start watching assets for changes (node) init Make full application initialization (install, seed, build assets) test Execute application tests Allowed for overriding next properties: PULL_TAG - Tag for pulling images before building own ('latest' by default) PUBLISH_TAGS - Tags list for building and pushing into remote registry (delimiter - single space, 'latest' by default) Usage example: make PULL_TAG='v1.2.3' PUBLISH_TAGS='latest v1.2.3 test-tag' app-push
рд╡рд╣ рдирд╢реЗ рдХреА рд▓рдд рдХреЗ рд▓рдХреНрд╖реНрдпреЛрдВ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, watch
( docker-compose run --rm node npm run watch
) рдХреЛ docker-compose run --rm node npm run watch
, рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ "рдЙрдард╛рдпрд╛" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЖрдкрдХреЛ рдХреЗрд╡рд▓ up
рдЯрд╛рд░рдЧреЗрдЯ рдХреЛ рдирд┐рд░реНрднрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдФрд░ рдЖрдкрдХреЛ рдХреЙрд▓ watch
рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреВрд▓рдиреЗ рдХреА рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИред - рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЖрдк рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдХрд░ рджреЗрдЧрд╛ред рд╡рд╣реА, рд░рдирд┐рдВрдЧ рдЯреЗрд╕реНрдЯ рдФрд░ рд╕реНрдЯреИрдЯрд┐рдХ рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ - рдПрдХ make test
рдЪрд▓рд╛рдПрдВ рдФрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рд╛рд░рд╛ рдЬрд╛рджреВ рд╣реЛ рдЬрд╛рдПрдЧрд╛!
рдХрд╣рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ, рдЙрдиреНрд╣реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ --cache-from
рдФрд░ рд╣рд░ рдЪреАрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ?
рдЖрдк рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ Makefile
рдХреА рд╕рд╛рдордЧреНрд░реА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдСрдЯреЛ рд╡рд╛рд▓рд╛
рдЖрдЗрдП рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдЕрдВрддрд┐рдо рднрд╛рдЧ рдкрд░ рдЬрд╛рдПрдВ - рдпрд╣ рдбреЙрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рди рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ GitLab CI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╡рд┐рдЪрд╛рд░ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдПрдХреАрдХрд░рдг рд╕реЗрд╡рд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдкреНрд░рдпреБрдХреНрдд рдЗрдореЗрдЬ рдЯреИрдЧреНрд╕ рдХреЗ рдирд╛рдордХрд░рдг рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░реЗрдВрдЧреЗ:
рдЯреИрдЧ рдХрд╛ рдирд╛рдо | рднрд╛рдЧреНрдп |
---|
latest | master рд╢рд╛рдЦрд╛ рд╕реЗ рдПрдХрддреНрд░ рдХреА рдЧрдИ рдЫрд╡рд┐рдпрд╛рдВред рдХреЛрдб рдХреА рд╕реНрдерд┐рддрд┐ рд╕рдмрд╕реЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ |
some-branch-name | рдмреНрд░рдВрдЪ some-branch-name рдкрд░ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдЪрд┐рддреНрд░ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдХрд┐рд╕реА рднреА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ "рд░реЛрд▓ рдЖрдЙрдЯ" рдкрд░рд┐рд╡рд░реНрддрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ master рдмреНрд░рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рд╡рд┐рд▓рдп рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмреНрд░рдВрдЪ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдереЗ - рдпрд╣ рдЗрд╕ рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдЫрд╡рд┐рдпреЛрдВ рдХреЛ "рдЦрд┐рдВрдЪрд╛рд╡" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдФрд░ - рд╣рд╛рдБ, рдкрд░рд┐рд╡рд░реНрддрди рдХреЛрдб рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреА рдЫрд╡рд┐рдпреЛрдВ рджреЛрдиреЛрдВ рдХреА рдЪрд┐рдВрддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! |
vX.XX | рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрд╡реЗрджрди рдХреА рд░рд┐рд╣рд╛рдИ (рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ) |
stable | рдЙрдкрдирд╛рдо, рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд╕рд╛рде рдЯреИрдЧ рдХреЗ рд▓рд┐рдП (рдирд╡реАрдирддрдо рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ) |
рд░рд┐рд▓реАрдЬрд╝ vX.XX
рдкреНрд░рд╛рд░реВрдк vX.XX
рдореЗрдВ рдПрдХ рдЯреИрдЧ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдХреЗ рд╣реЛрддрд╛ рд╣реИред
рдмрд┐рд▓реНрдб рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХрд╛ рдХреИрд╢рд┐рдВрдЧ ./src/vendor
рдФрд░ ./src/node_modules
+ --cache-from
docker build
, рдФрд░ рдЗрд╕рдореЗрдВ рдирд┐рдореНрди рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВ:
рдордВрдЪ рдХрд╛ рдирд╛рдо | рднрд╛рдЧреНрдп |
---|
prepare | рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг - рд╕реНрд░реЛрдд рдХреЗ рд╕рд╛рде рдЫрд╡рд┐ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди |
test | рддреИрдпрд╛рд░ рдЪрд░рдг рдореЗрдВ рдПрдХрддреНрд░ рдХреА рдЧрдИ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ ( phpunit , рд╕реНрдЯреИрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдЪрд▓рд╛рдирд╛) |
build | рд╕рднреА composer рдирд┐рд░реНрднрд░рддрд╛ ( --no-dev ) рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛, app.css webpack assets рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛, рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ ( vendor/* , app.js , app.css ) рд╕рд╣рд┐рдд рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдЫрд╡рд┐ рдХрд╛ webpack |

latest
рдФрд░ master
рдЯреИрдЧ рдХреЗ рд╕рд╛рде push
рд╡рд╛рд▓реА master
рд╢рд╛рдЦрд╛ рдкрд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛
рдФрд╕рддрди, рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд╕рднреА рдЪрд░рдгреЛрдВ рдореЗрдВ 4 рдорд┐рдирдЯ рд▓рдЧрддреЗ рд╣реИрдВ , рдЬреЛ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ (рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╣рдорд╛рд░реА рд╕рдм рдХреБрдЫ рд╣реИ)ред
рдЖрдк рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рдХрд▓реЗрдХреНрдЯрд░ рдХреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди ( .gitlab-ci.yml
) рдХреА рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдбреЙрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ php рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рд░рд╡реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХрд╛рдВрдЯрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдкрдиреЗ рд╕рд╛рде tarampampam/laravel-in-docker
рдХреА рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ tarampampam/laravel-in-docker
рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рдЕрдкрдиреЗ рдЖрдк рдЬреАрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реНрдерд╛рдиреАрдп рд▓реЙрдиреНрдЪ рдХреЗ рд▓рд┐рдП - рдХреЗрд╡рд▓ 2 рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВ:
$ git clone https://gitlab.com/tarampampam/laravel-in-docker.git ./laravel-in-docker && cd $_ $ make init
рдлрд┐рд░ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ http://127.0.0.1:9999
рдЦреЛрд▓реЗрдВред
... рдЕрд╡рд╕рд░ рдХреЛ рдЬрдмреНрдд рдХрд░рдирд╛
рдлрд┐рд▓рд╣рд╛рд▓ рдореИрдВ рдЯреАрдПрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ "рдСрдЯреЛрдХреЛрдб" рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рд╣рдо рдкреНрд░рддрд┐рднрд╛рд╢рд╛рд▓реА рдкреАрдПрдЪрдкреА-рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдПрдбрдорд┐рдирд┐рд╕реНрдЯреНрд░реЗрдЯрд░ (рд╡рд┐рдХрд╛рд╕ рдХрд╛рд░реНрдпрд╛рд▓рдп рдпреЗрдХрд╛рддреЗрд░рд┐рдирдмрд░реНрдЧ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ) рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдкрд╣рд▓рд╛ рдпрд╛ рджреВрд╕рд░рд╛ рдорд╛рдирддреЗ рд╣реИрдВ - "рдореИрдВ рдПрдХ рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдмрдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ: рдИрдореЗрд▓ hr@avtocod.ru
рдкрд░ рдИрдореЗрд▓ hr@avtocod.ru
:% link_on_summary%" рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рд╣рдо рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░рддреЗ рд╣реИрдВред