рдбреЙрдХрд░ + рд▓рд╛рд░рд╡реЗрд▓ + рд░реЛрдбрд░рдирд░ = ara

рдЪрд┐рддреНрд░


рдпрд╣ рдкреЛрд╕реНрдЯ рдЙрди рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░ рд▓рд┐рдЦреА рдЧрдИ рд╣реИ, рдЬреЛ рд╕рдордп-рд╕рдордп рдкрд░ "рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдореЗрдВ рдЗрд▓реНрдпреВрдорд┐рдиреЗрдЯ / рд╕рд┐рдореНрдлрдиреА / рдорд╛рдпрдСрди Psr7 рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреИрд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдкрд╣рд▓реЗ рд▓рд┐рдЦреА рдЧрдИ рдкреЛрд╕реНрдЯ рдХрд╛ рд▓рд┐рдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдХрд╛рдлреА рдмрджрд▓ рдЧрдП рд╣реИрдВред


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


рдореИрдВ рд▓рд╛рд░рд╡реЗрд▓ рдХреЛ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкрд░рд┐рдЪрд┐рдд рд╣реИ рдФрд░ рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рд╣реИред рдЕрдиреНрдп PSR-7 рдЖрдзрд╛рд░рд┐рдд рдлреНрд░реЗрдо / рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╣рд╛рдиреА рдЙрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред

рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐


рдореИрдВ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ "рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ" рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:


  • рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛
  • FPM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдпрджрд┐ рд╣рдо рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╢рд╛рдпрдж рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдЪрдпрди рдХреЗ рд╕реНрддрд░ рдкрд░ рднреА рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЗрд╕реЗ рддреЗрдЬреА рд╕реЗ рдХреБрдЫ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЫреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕ рддрдереНрдп рдХреЛ "рдЕрдиреБрдХреВрд▓рд┐рдд" рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рд╕реНрдореГрддрд┐ рд▓реАрдХ рд╣реЛ рд╕рдХрддреА рд╣реИред Lachezis рджреНрд╡рд╛рд░рд╛ рд░реЛрдбрд░рдирд░ рдпрд╣рд╛рдБ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рд▓реЗ рдХрднреА рдирд╣реАрдВ рд╣реИ
  • рд╕реНрд░реЛрдд рдФрд░ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдЫрд╡рд┐ред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдорд╛рд░реНрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЙрд╕реА рдЫрд╡рд┐ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╕реНрдереИрддрд┐рдХ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд╕рд╛рдордиреЗ рдХреА рддрд░рдл nginx; рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдПрдХ рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░ рджреНрд╡рд╛рд░рд╛ рд╕реЗрд╡рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдорд╛рди рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рд╡реЙрд▓реНрдпреВрдо рдлреЗрдВрдХрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╕реНрдХреЗрд▓рд┐рдВрдЧ) - рдпрд╣ рдпреЛрдЬрдирд╛ рдЙрддреНрдкрд╛рдж рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдмрд▓реНрдХрд┐ рдЬрдЯрд┐рд▓ рд╕рд╛рдмрд┐рдд рд╣реБрдИ рд╣реИред рдФрд░ рдХреНрдпрд╛ рдЕрдзрд┐рдХ рд╣реИ, рдЖрд░рдЖрд░ рдЦреБрдж рд╣реА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдмрд╣реБрдд рд╕реА рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рд╣реИрдВ (рдпрд╛ рд╕рдВрд╕рд╛рдзрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдЬрдирд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЛ рд▓реЛрдб рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) - рд╣рдо рдЗрд╕реЗ рд╕реАрдбреАрдПрди (рдПрд╕ 3 + рдХреНрд▓рд╛рдЙрдбрдлреНрд░реЙрд╕реНрдЯ + рдХреНрд▓рд╛рдЙрдбрдлреЗрдпрд░ рдмрдВрдбрд▓ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВред
  • рдЬрдЯрд┐рд▓ CIред рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдмрди рдЧрдИ рдЬрдм рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╕рдХреНрд░рд┐рдп "рдирд┐рд░реНрдорд╛рдг рдорд╛рдВрд╕" рдХреА рдЕрд╡рдзрд┐ рд╢реБрд░реВ рд╣реБрдИред рдПрдХ рджреЛрд╕реНрдд рдЬреЛ рдкрд╣рд▓реЗ рдЗрд╕ рд╕реАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛, рдХреБрдЫ рднреА рддреЛрдбрд╝рдиреЗ рдХреЗ рдбрд░ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдм, рдпрд╣ рдЬрд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рдЗрд╕рдХреА рд╕рдордЭ рдХреЗ рд╕рд╛рде, рдореИрдВ рдЙрдирдХреЗ рдЙрдиреНрдореВрд▓рди рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред "рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓" рдХрд╛ рд╕реЗрдЯ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ - рдпрд╣ рд╡рд╣реА docker-ce , docker-compose рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА Makefile ред


рдирддреАрдЬрддрди, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:


  • рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реЙрд▓реНрдпреВрдо рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдХрдВрдЯреЗрдирд░
  • рдЧрд┐рдЯ-рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг - рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ git pull рдмрд╛рдж рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдбрд╛рд▓ рджреЗрдВрдЧреЗ рдФрд░ рдХреЛрдб рдХреЛ рдзрдХреЗрд▓рдиреЗ рдкрд░ рд░реЛрдХ рд▓рдЧрд╛рдПрдВрдЧреЗ рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВ (рд╣реБрдХ рдХреЛ рдЧрд┐рдЯ рдХреЗ рдиреАрдЪреЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ)
  • рд░реЛрдбрд░рдирд░ HTTP (рдПрд╕) рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд▓реЗрдЧрд╛
  • рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрднреА рднреА рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП dd(..) рдФрд░ dump(..) рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рдкрд╛рдПрдВрдЧреЗ, рдЬрдмрдХрд┐ рдЙрдирдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреБрдЫ рднреА рдХреНрд░реИрд╢ рдирд╣реАрдВ рд╣реЛрдЧрд╛
  • рдЯреЗрд╕реНрдЯ рд╕реАрдзреЗ PHPStorm IDE рд╕реЗ рдЪрд▓рд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрдиреНрдЯреЗрдирд░ рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛
  • рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрд╕реНрдХрд░рдг рдЯреИрдЧ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╕рдордп CI рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЫрд╡рд┐рдпрд╛рдВ рдПрдХрддреНрд░ рдХрд░реЗрдЧрд╛
  • рдЪрд▓рд┐рдП CHANGELOG.md рдФрд░ ENVIRONMENT.md рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХрд╛ рд╕рдЦреНрдд рдирд┐рдпрдо рд▓реЗрддреЗ рд╣реИрдВ

рдПрдХ рдирдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рджреГрд╢реНрдп рдкрд░рд┐рдЪрдп


рдПрдХ рдЕрдЪреНрдЫреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП, рдореИрдВ рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрдИ рдЪрд░рдгреЛрдВ рдореЗрдВ рддреЛрдбрд╝ рджреВрдВрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдмрджрд▓рд╛рд╡ рдЕрд▓рдЧ рдПрдордЖрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ (рд╡рд┐рд▓рдп рдХреЗ рдмрд╛рдж, рд╕рднреА рдмреНрд░рдВрдЪ рдЬрдЧрд╣ рдкрд░ рд░рд╣реЗрдВрдЧреЗ, "рдЪрд░рдг" рдХреЗ рд╢реАрд░реНрд╖рдХ рдореЗрдВ рдПрдордЖрд░ рдХреЗ рд▓рд┐рдВрдХ;) рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ composer create-project laravel/laravel рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд▓рд╛рд░рд╡реЗрд▓ рдХрдВрдХрд╛рд▓ рд╣реИ:


 $ docker run \ --rm -i \ -v "$(pwd):/src" \ -u "$(id -u):$(id -g)" \ composer composer create-project --prefer-dist laravel/laravel \ /src/laravel-in-docker-with-rr "5.8.*" 

рдЪрд░рдг 1 - рдбреЙрдХрд┐рдВрдЧ + рдЖрд░рдЖрд░


рдкрд╣рд▓рд╛ рдХрджрдо рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рд┐рдЦрд╛рдирд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ " docker-compose.yml рдЙрдард╛рдиреЗ рдФрд░ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ" рдФрд░ рдПрдХ рдпрд╛ рджреЛ рдЖрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд░рд▓реАрдХреГрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ Dockerfile , Dockerfile docker-compose.yml рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


Dockerfile


рдореВрд▓ рдЫрд╡рд┐ рдЬреЛ рдореИрдВ php:XXX-alpine рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ php:XXX-alpine рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╡рд╣ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рд╕рднреА рдмрд╛рдж рдХреЗ рдЕрдкрдбреЗрдЯ рдХреЗрд╡рд▓ рдЗрд╕ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдореВрд▓реНрдп рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рд╣реЛ рдЧрдП рд╣реИрдВ (PHP рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЕрдм рдкрд╣рд▓реЗ рд╕реЗ рдЖрд╕рд╛рди рд╣реИ)ред


рд╕рдВрдЧреАрддрдХрд╛рд░ рдФрд░ рд░реЛрдбрд░рдирд░ рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдорд▓реНрдЯреАрд╕реНрдЯреЗрдЬ рдФрд░ COPY --from=... рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдВрдЯреЗрдирд░ рддрдХ рдкрд╣реБрдВрдЪрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - - рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдФрд░ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рднреА рдорд╛рди "рдмрд┐рдЦрд░реЗ рд╣реБрдП" рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реИрдВред рдпрд╣ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ curl / git clone рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд┐рдирд╛ / make build ред 512k / roadrunner рдЪрд┐рддреНрд░ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ , рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ - рддреЛ рдЖрдк рд╕реНрд╡рдпрдВ рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


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

Dockerfile рдореИрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ HTTPS рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд SSL рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ - рдХреБрдЫ рднреА "рд╕рд╛рдорд╛рдиреНрдп" рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд░реЛрдХрддрд╛ рдирд╣реАрдВ рд╣реИред


рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдХрд╣рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛:


 COPY ./composer.* /app/ RUN set -xe \ && composer install --no-interaction --no-ansi --no-suggest --prefer-dist \ --no-autoloader --no-scripts \ && composer install --no-dev --no-interaction --no-ansi --no-suggest \ --prefer-dist --no-autoloader --no-scripts 

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


composer install рдХреЛ рджреЛ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - (рджреВрд╕рд░реА рдмрд╛рд░- --no-dev ) рджреЗрд╡ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдХреИрд╢ рдХреЛ "рд╡рд╛рд░реНрдо рдЕрдк" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддрд╛рдХрд┐ рдЬрдм рд╣рдо рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП CI рдкрд░ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдЧреАрддрдХрд╛рд░ рдХреИрд╢ рд╕реЗ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЫрд╡рд┐ рдореЗрдВ рд╣реИ, рдФрд░ рдирд╣реАрдВ рджреВрд░ рдХреА рдЖрдХрд╛рд╢рдЧрдВрдЧрд╛рдУрдВ рд╕реЗ рдлреИрд▓рд╛ рд╣реИред


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


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


RoadRunner


рд░реЛрдбрд░рдирд░ рдХреЛ рд▓рд╛рд░рд╡реЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреИрдХреЗрдЬ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рд╢реЗрд▓ рдореЗрдВ рдХрдорд╛рдВрдб рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдПрдХреАрдХрд░рдг рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ ( docker-compose run app sh ):


 $ composer require avto-dev/roadrunner-laravel "^2.0" $ ./artisan vendor:publish --provider='AvtoDev\RoadRunnerLaravel\ServiceProvider' --tag=rr-config 

APP_FORCE_HTTPS=true ./docker/docker-compose.env рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдФрд░ .rr*.yaml рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдореЗрдВ SSL рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ .rr*.yaml ред


dump(..) рдФрд░ dd(..) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдПрдХ рдФрд░ рдкреИрдХреЗрдЬ рд╣реИ - avto-dev/stacked-dumper-laravel ред рдЗрди рд╕рднреА рд╕рд╣рд╛рдпрдХреЛрдВ рдХреЛ рдХреНрд░рдорд╢рдГ \dev\dd(..) рдФрд░ \dev\dump(..) dp \dev\dd(..) рд▓рд┐рдП рдПрдХ pefix рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рдЖрдк рдлрд╝реЙрд░реНрдо рдХреА рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрдЦреЗрдВрдЧреЗ:
 worker error: invalid data found in the buffer (possible echo) 

рд╕рднреА рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЗ рдмрд╛рдж, do docker-compose up -d рдФрд░ voila рдХрд░реЗрдВ:


рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ


PostgeSQL рдбреЗрдЯрд╛рдмреЗрд╕, рд░реЗрдбрд┐рд╕, рдФрд░ рд░реЛрдбрд░рдирд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рдЪрд▓реЗ рдЧрдПред


рдЪрд░рдг 2 - рдореЗрдХрдлрд╛рдЗрд▓ рдФрд░ рдЯреЗрд╕реНрдЯ


рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдерд╛, рдПрдХ рдореЗрдХрдлрд╛рдЗрд▓ рдПрдХ рдмрд╣реБрдд рд╣реА рдХрдо рдХреАрдордд рдХреА рд╡рд╕реНрддреБ рд╣реИред рдЖрд╢реНрд░рд┐рдд рд▓рдХреНрд╖реНрдп, рдЖрдкрдХреА рд╕реНрд╡рдпрдВ рдХреА рд╕рдВрд╢реНрд▓рд┐рд╖реНрдЯ рдЪреАрдиреА, 99% рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдирдХреНрд╕ / рдореИрдХ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдорд╢реАрди рдкрд░ рдЦрдбрд╝рд╛ рд╣реИ, рд╕реНрд╡рддрдГ рдкреВрд░реНрдг "рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░" - рдЗрд╕рдХреЗ рдлрд╛рдпрджреЗ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕реВрдЪреАред


рдЗрд╕реЗ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ make , рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:


рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ


рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдпрд╛ рддреЛ рдПрдХ make test рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди ( make shell ) рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╢реЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, composer phpunit рдЪрд▓рд╛ composer phpunit ред рдПрдХ рдХрд╡рд░реЗрдЬ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ make test-cover рдмрдирд╛рддреЗ make test-cover , рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛ рд╡рд╛рд▓реЗ xdebug рдХреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ (рдЪреВрдВрдХрд┐ рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрдХреНрд╕рд░ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ CI рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ - рдпрд╣ рд╕рдорд╛рдзрд╛рди рд╕рднреА рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдЫрд╡рд┐ рд░рдЦрдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рд▓рдЧрддрд╛ рд╣реИ рджреЗрд╡-рд▓реЛрд╢рди)ред


рдЧрд┐рдЯ рд╣реБрдХ


рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реБрдХ 2 рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛рдПрдБ рдкреВрд░реА рдХрд░реЗрдВрдЧреЗ - рдХреЛрдб рдХреЛ рдЙрд╕ рдореВрд▓ рдореЗрдВ рдзрдХреЗрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рди рджреЗрдирд╛ рдЬрд┐рд╕рдХреЗ рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓ рдирд╣реАрдВ рд╣реИрдВ; рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдбрд╛рд▓ рджреЗрддрд╛ рд╣реИ, рдпрджрд┐ рдЖрдкрдХреА рдорд╢реАрди рдкрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЦреАрдВрдЪрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ composer.lock рдмрджрд▓ рдЧрдпрд╛ рд╣реИред Makefile , рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд▓рдХреНрд╖реНрдп рд╣реИ:


 cwd = $(shell pwd) git-hooks: ## Install (reinstall) git hooks (required after repository cloning) -rm -f "$(cwd)/.git/hooks/pre-push" "$(cwd)/.git/hooks/pre-commit" "$(cwd)/.git/hooks/post-merge" ln -s "$(cwd)/.gitlab/git-hooks/pre-push.sh" "$(cwd)/.git/hooks/pre-push" ln -s "$(cwd)/.gitlab/git-hooks/pre-commit.sh" "$(cwd)/.git/hooks/pre-commit" ln -s "$(cwd)/.gitlab/git-hooks/post-merge.sh" "$(cwd)/.git/hooks/post-merge" 

make git-hooks рд╕реЗ рдореМрдЬреВрджрд╛ рд╣реБрдХ рджреВрд░ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╡реЗ рдЕрдкрдиреЗ рд╕реНрдерд╛рди рдкрд░ .gitlab/git-hooks рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦ рджреЗрддреЗ рд╣реИрдВред рдЙрдирдХреЗ рд╕реНрд░реЛрдд рдХреЛ рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


PhpStorm рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓ рд░рд╣рд╛ рд╣реИ


рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ - рдореИрдВрдиреЗ рдЗрд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ ./vendor/bin/phpunit --group=foo рд╕реАрдзреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдкрд░реАрдХреНрд╖рдг рдпрд╛ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╕рдордп рд╣реЙрдЯрдХреА рдХреЛ рд╕реАрдзреЗ рджрдмрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп ./vendor/bin/phpunit --group=foo ред


File > Settings > Languages & Frameworks > PHP > CLI interpreter > [...] > [+] > From Docker, Vargant, VM, Remote ред рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ , рдФрд░ рдРрдк рд╕реЗрд╡рд╛ рдирд╛рдо рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред


рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ


рджреВрд╕рд░рд╛ рдЪрд░рдг рдХрдВрдЯреЗрдирд░ рд╕реЗ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдкреБрдирд┐рдЯ рдХреЛ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ: File > Settings > Test frameworks > [+] > PHPUnit by remote interpreter рдФрд░ рдкрд╣рд▓реЗ рдмрдирд╛рдП File > Settings > Test frameworks > [+] > PHPUnit by remote interpreter рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред Path to script /app/vendor/autoload.php , /app/vendor/autoload.php рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ, рдФрд░ Path mappings рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЛ /app рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд┐рдП рдЧрдП рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред


рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ


рдФрд░ рдЕрдм рд╣рдо рдЖрдИрдбреАрдИ рд╕реЗ рд╕реАрдзреЗ рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рдЫрд╡рд┐ рдХреЗ рдЕрдВрджрд░ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд▓рд┐рдирдХреНрд╕) Ctrl + Shift + F10 рджрдмрд╛рдХрд░ред


рдЪрд░рдг 3 - рд╕реНрд╡рдЪрд╛рд▓рди


рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЬреЛ рдХреБрдЫ рднреА рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИ рд╡рд╣ рд╣реИ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдФрд░ рдЫрд╡рд┐ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, .gitlab-ci.yml рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ .gitlab-ci.yml , рдЗрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ .gitlab-ci.yml ред рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╕рд░рд▓ рд╣реЛрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЦреЛрдирд╛ рдирд╣реАрдВ рд╣реИред


рдЫрд╡рд┐ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╡рдЪрди рдкрд░, рдкреНрд░рддреНрдпреЗрдХ рдмреНрд░рдВрдЪ рдкрд░ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ - --cache-from рдлрд┐рд░ рд╕реЗ рдкреНрд░рддрд┐рдмрджреНрдз рдкрд░ рдПрдХ рдЫрд╡рд┐ рдХреЛрдбрд╛рдВрддрд░рдг рдмрд╣реБрдд рддреЗрдЬ рд╣реИред рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд░рдВрдЪ рдкрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рдмреНрд░рдВрдЪ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЫрд╡рд┐ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХреБрдЫ рднреА рд╣рдореЗрдВ "рд▓рд╛рдЗрд╡" рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЭреБрдВрдб / k8s / etc рдХреЛ рд░реЛрд▓ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ master рд▓рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рд╡рд┐рд▓рдп рд╕реЗ рдкрд╣рд▓реЗ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред


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


"рд░рд┐рд▓реАрдЬрд╝ рдХреА рд░рд┐рд▓реАрдЬрд╝" рдХреЗ рд▓рд┐рдП - рдмрд╕ рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рдЯреИрдЧ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ vX.XX (рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рд╕рд┐рдореЗрдВрдЯрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдЪрд┐рдкрдХреЗ рд░рд╣рддреЗ рд╣реИрдВ - рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛) - рд╕реАрдЖрдИ рдЫрд╡рд┐ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдЧрд╛, рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдЧрд╛, рдФрд░ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░реЗрдЧрд╛ рдЬреЛ рдЖрдк deploy to somewhere рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред


рдХреЗрд╡рд▓ "рд░рд┐рд▓реАрдЬрд╝ рд░рд┐рд▓реАрдЬрд╝" рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЯреИрдЧ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ) рдХреЛ рдордд рднреВрд▓рдирд╛ред

CHANGELOG.md рдФрд░ ENVIRONMENT.md


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


рдирд┐рд╖реНрдХрд░реНрд╖


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


рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХреНрд▓реЛрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ make git-hooks && make install && make up рдФрд░ рдЙрдкрдпреЛрдЧреА рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ make git-hooks && make install && make up ред рдХреЙрдорд░реЗрдбреНрд╕ * рдСрдкреНрд╕-рд╣реВрдБ - рд╡рд╛рдВрдЫрд┐рдд рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдЫрд╡рд┐ рд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рдЙрдирдХреЗ рд╕рдореВрд╣реЛрдВ рдкрд░ рд░реЛрд▓ рдХрд░реЗрдВред


рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ - рдпрд╣ рдпреЛрдЬрдирд╛ рднреА рд╕рд░рд▓ рд╣реИ, рдФрд░ "рдореБрдХрд╛рдмрд▓рд╛" рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдореИрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓рдкреЗрдЯ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдирд╛ рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд┐рдпрд╛ рд╣реИред

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


All Articles