Moby: рдХрдВрдкреЛрдЬрд╝ v3 / docker рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдореЗрдВ `рд╡рд┐рд╕реНрддрд╛рд░` рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рдлрд╝рд░ре░ 2017  ┬╖  165рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: moby/moby

рдЬреИрд╕рд╛ рдХрд┐ https://github.com/docker/compose/issues/4315 рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, extends рдлреАрдЪрд░ рдЬреЛ docker-compose рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рдЕрдкрдиреА рдЦрд╛рдорд┐рдпреЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕реЗ рдЕрднреА рддрдХ рдЗрдВрдЬрди рдХреЗ рдХрдВрдкреЛрдЬрд╝ рдкреНрд░рд╛рд░реВрдк рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рдЕрдм рддрдХ, рд╣рдордиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рд▓рд╛рд╣ рджреА рд╣реИ рдХрд┐ рд╡реЗ v3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрдкрдиреА рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдХреЗрд╡рд▓ рд╕рдорддрд▓ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рд╣рдо рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЕрдкрдЧреНрд░реЗрдб рдкрде рдХреИрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛ рдЧрдП рд╣реИрдВ?

cc @dnephin @vdemeester

arestack kinfeature

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЗрддрдирд╛ рд╣реА рдирд╣реАрдВ, рдЪреЗрдВрдЬрд▓реЙрдЧ рдХрд╣рддрд╛ рд╣реИ "рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП 'рдЕрдкрдЧреНрд░реЗрдб рдХреИрд╕реЗ рдХрд░реЗрдВ' рджреЗрдЦреЗрдВ"ред рдореИрдВ "рдХреИрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ" рдХреЗ рд▓рд┐рдП рджреЗрдЦрддрд╛ рд╣реВрдВ, рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЕрдкрдЧреНрд░реЗрдб рдХреИрд╕реЗ рдХрд░реЗрдВ, рдФрд░ рдЬреЛ рдХрд╣рддрд╛ рд╣реИ рд╡рд╣ рд╣реИ "рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП 'рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗрд╡рд╛рдПрдВ' рджреЗрдЦреЗрдВ"ред рдореИрдВ "рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕реЗрд╡рд╛рдУрдВ" рдкрд░ рдЬрд╛рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдВрддрддрдГ рдЕрдкрдиреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рджреЗрдЦреВрдВрдЧрд╛, рдХреЗрд╡рд▓ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ "рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЪреЗрдВрдЬрд▓реЙрдЧ рджреЗрдЦреЗрдВ"ред

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдпрд╣ рдПрдХ рдХреНрд░реВрд░ рдордЬрд╛рдХ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рд▓реЗрдЦрди рд▓реЗрдЦрдХ рдЦреЗрд▓ рд░рд╣рд╛ рд╣реИред

рд╕рднреА 165 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВрдиреЗ рдХреБрдЫ рдиреЛрдЯреНрд╕ рдЬреЛрдбрд╝реЗ рд╣реИрдВ https://github.com/docker/compose/issues/4315#issuecomment -280617251 рдореЗрд░реЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рд▓рд╛ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рддрдХ рдореМрдЬреВрдж рд╣реИ 2.1 рд╕рдВрд╕реНрдХрд░рдг рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ I рдорд┐рд╕ рдЕрдореВрд░реНрдд рд╕реЗрд╡рд╛рдУрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рд╣реИ (рдЬрд┐рд╕реЗ рдХрднреА рдирд╣реАрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рд▓реЗрдХрд┐рди рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЧреБрдгреЛрдВ рдХреЛ рд╕рдореВрд╣рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред

docker/compose#4315 рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдкрд░ рд╕рд╣рдордд рд╣реБрдП рдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ extends рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рд╡рд╣ рдереЛрдбрд╝рд╛ рд╕рдВрдпрдореА рдерд╛ред

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

#
# Docker Compose configuration
#
# Due to lack of "expressivity" in Compose, we define our own couple of service
# "pseudo-types":
#
#   - image-only services (name: *-image)
#
#     The only goal of these is to build images. No other services build images.
#
#     These have entrypoint overridden to exit immediately.
#
#   - base services (name: *-base)
#
#     These contain common configuration and are intended to be extended.
#
#     Their command (not entrypoint, to keep the original one) is overridden to
#     exit immediately. Service must support a command to exit immediately.
#
#   - task services (name: *-task)
#
#     These are intended for running one-off commands.
#
#     Their default command is overridden to exit immediately. Service must
#     support a command to exit immediately.
#
#   - "real" services
#
#     These are actual services that stay up and running.
#
version: '2'
services:
  ...

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ v2.1 рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд░рд▓ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рджреЗрд╡, рдЙрддреНрдкрд╛рдж рдФрд░ env рдХреЗ рдмреАрдЪ рдереЛрдбрд╝рд╛ рдФрд░ рдкрдардиреАрдп рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИред

рджрд░рдЕрд╕рд▓, рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ

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

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

рд╣рдореЗрдВ v3.x рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╕реЗ рднреА рд░реЛрдХ рд░рд╣рд╛ рд╣реИред

рд╣рдо рдЕрдкрдиреЗ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░-рдкреНрд░рддрд┐-рдЖрд╡реГрддреНрддрд┐ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдБ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ docker-compose.yml рдЬреЛ рд╣рд╛рде рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рд▓рд┐рдП env рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рд╕рд╛рдорд╛рди (DRY) рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдореВрд▓ рд╕реЗрд╡рд╛ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдореВрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ extend ред

рдЗрд╕рд▓рд┐рдП рдЬрдм рдореБрдЭреЗ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрдВрдЯреЗрдирд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдореБрдЭреЗ рдХреЗрд╡рд▓ рд╕рд╣реА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ cd рд╣реЛрддреА рд╣реИ рдФрд░ рдлрд┐рд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕реАрдзреЗ рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдХрдорд╛рдВрдб рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдХреЛрдИ -f рдЭрдВрдбреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп рджреЗрдЦрдиреЗ рдпрд╛ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдмрд╕ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред

рдореБрдЭреЗ рд╕рдВрд╕реНрдХрд░рдг 3 рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЕрд╡рд░реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореИрдВ рдЕрдкрдиреА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рд▓реЗрдЖрдЙрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП services.yml рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП dev.services.yml рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ (рдЬреНрдпрд╛рджрд╛рддрд░ рд╡реЙрд▓реНрдпреВрдо рдЬреЛрдбрд╝рдирд╛) рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдкрд╕рдВрдж рд╣реИ рдЬрдм рдпрд╣ рдерд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рдпрд╣ рдПрдХ рдбреАрд▓ рдмреНрд░реЗрдХрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рд╕рдВрд╕реНрдХрд░рдг 3 рдореЗрдВ рдЬрд╛рдиреЗ рд╕реЗ рд░реЛрдХреЗрдЧрд╛, рдЬрдм рддрдХ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рди рд╣реЛред

рдореИрдВ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рдФрд░ рдЙрдкрдпреБрдХреНрдд рдХреЗ рд╕рд╛рде v2.1 'рд╡рд┐рд╕реНрддрд╛рд░' рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рдирд╣реАрдВ рд╣реВрдВред рдЕрдореВрд░реНрдд рд╕реЗрд╡рд╛рдУрдВ рдЬреИрд╕рд╛ рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рджреЛрдиреЛрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЕрдм 'рд╡рд┐рд╕реНрддрд╛рд░' рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рдЦреЛрд▓реЗрдЧрд╛ред

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

@ рд╢рд┐рди- рдХреНрдпрд╛ рдЗрд╕реЗ 3.2 рд╕реНрдХреАрдорд╛ рдкрд░ рд╡рд╛рдкрд╕ рд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛?

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

рдореБрдЭреЗ рд╕рдЯреАрдХ extends рдЦреЛрдиреЗ рдореЗрдВ рдХреЛрдИ рджрд┐рдХреНрдХрдд рдирд╣реАрдВ рд╣реЛрдЧреА, рдЬрдм рддрдХ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдЕрдореВрд░реНрдд рд╕реЗрд╡рд╛ рдХреЛ "рддрддреНрдХрд╛рд▓" рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдиреНрдп рддрд░реАрдХрд╛ рд╣реИред

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

--frustrated

+1
рдореИрдВ рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдлрд╝реНрд▓реИрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреЗ рдкреАрдЫреЗ рддрд░реНрдХ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╣рдорд╛рд░реА рд╡рд┐рдХрд╛рд╕ рд╕реЗрд╡рд╛ рдЯреЛрдкреЛрд▓реЙрдЬреА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред рд╣рдо рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЕрднреА рдХреЗ рд▓рд┐рдП -f рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдпрд╣ рдпрд╛рдж рди рд░рдЦрдирд╛ рдкрдбрд╝реЗ рдХрд┐ рдХрд┐рди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд┐рди рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реИред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рдВрд░рдЪрдирд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмреЗрд╣рддрд░ рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдПрдХ рд╕рдВрддреЛрд╖рдЬрдирдХ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ!

рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреА рд╕реВрдЪреА рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдореЗрд░реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рдмрдВрдзрд┐рдд рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ DRYup рдХрд░рдирд╛ рд╣реИред рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдореИрдВ 'рд╡рд┐рд╕реНрддрд╛рд░' рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рдкрд╛рдКрдВрдЧрд╛ рдпрджрд┐ v3. рдореИрдВ v2 рдкрд░ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛... рдФрд░ рдореИрдВ рдРрд╕реЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдирд╣реАрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдЬрд╣рд╛рдВ рдореБрдЭреЗ -f рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛рд░реНрдп-рдЖрд╕рдкрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдЪреВрдВрдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 3 рдЬрдореЗ рд╣реБрдП рд╣реИ рдФрд░ рдореБрдЭреЗ рд╕рд╛рдорд╛рдиреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реАрдХрд╛ рдЪрд╛рд╣рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯрд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИрдХ рдХрд┐рдпрд╛, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдпрд╣рд╛рдВ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ (рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╣реА рдЬрдЧрд╣ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдмрддрд╛рдиреЗ рдореЗрдВ рд╕рдВрдХреЛрдЪ рди рдХрд░реЗрдВ рдХрд┐ рдореИрдВ рдФрд░ рдХрд╣рд╛рдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ :))

рдореИрдВ рдпрд╣рд╛рдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд░реЗрдкреЛ рдореЗрдВ рдПрдХ рд░реАрдбрдореА рд╣реИред
рд╕рдмрдХрд╛ рднрд▓рд╛ рд╣реЛ я╕П

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдпрд╣ рд░рд╣рд╛ рд▓рд┐рдВрдХ :D

+1

+1

+1

+1s . рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж
рдЗрд╕ рдмреАрдЪ, рдореБрдЭреЗ рдПрдХ рдФрд░ docker noop image рдорд┐рд▓рд╛ рд╣реИ, рдЬреЛ 10 ^ 3 рдХреЗ рдХрд╛рд░рдХ рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИ (рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдиреЙрдк рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреЗ рдХрд╛рд░рдг)ред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЙрд╕ рд░реЗрдкреЛ рдореЗрдВ рдХреЛрдИ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдорд╛рд▓рд┐рдХ рдХреЛ facebook рдкрд░ рдПрдХ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдЙрд╕рдиреЗ рдЕрднреА рддрдХ рдХреЛрдИ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджрд┐рдпрд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдПрдХ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ рдпрджрд┐ рдЕрдзрд┐рдХ рд▓реЛрдЧ рдЙрд╕рд╕реЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫреЗрдВ :)

рдХреБрдЫ рдРрд╕рд╛ рдЬреЛ рдХреБрдЫ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ (рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рднреАрддрд░) рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╡рд╛рдИрдПрдПрдордПрд▓ рдПрдВрдХрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реЛрдЧрд╛: https://learnxinyminutes.com/docs/yaml/

рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ JSON рд╕реНрдХреАрдорд╛ рдЙрди рдкрд░ рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдлрд▓ рдХрд░ рд░рд╣реА рд╣реИ service must be a mapping, not a NoneType. ред

рдЕрд░реЗ, @рдЧреНрд░реЗрд╕рд╛рдЗрдб , рдпрдорд▓ рдПрдВрдХрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рд▓рд┐рдПред рдореИрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдКрдкрд░ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВред

рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ noop рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рджреБрдЦрдж рд╣реИ?

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ env vars рдХреЗ рд▓рд┐рдП, рд╡реЗ env var рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВ? рдпрджрд┐ рдпрд╣ рд░рд╣рд╕реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рддреЛ рдЭреБрдВрдб рд░рд╣рд╕реНрдп рд╕реБрд╡рд┐рдзрд╛ (рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рд░рд╣рд╕реНрдп рд╕рдорд╛рдзрд╛рди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрджрд┐ рдпрд╣ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рддреЛ рд╣рдо рдареАрдХ рд╣реИрдВ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдРрдк/рд╕реЗрд╡рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИрдВ, рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИред

рдпрджрд┐ рдЖрдкрдХреЛ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рдпрд╣ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдПрдХ рд╣реА рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рд░рдирдЯрд╛рдЗрдо рдЙрджреНрджреЗрд╢реНрдпреЛрдВ/рдХрд╛рд░реНрдпреЛрдВ (рдЙрдкрднреЛрдХреНрддрд╛, рдирд┐рд░реНрдорд╛рддрд╛, http рдХрд╛рд░реНрдпрдХрд░реНрддрд╛, ...) рдХреЗ рд▓рд┐рдПред

рдпрджрд┐ рдпрд╣ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рддреЛ рд╣рдо рдареАрдХ рд╣реИрдВ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдРрдк/рд╕реЗрд╡рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИрдВ, рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдЕрд╕рд╣рдордд рд╣реЛрдиреЗ рдХреА рдкреНрд░рд╡реГрддреНрддрд┐ рд░рдЦрддрд╛ рд╣реВрдВред рдЬрд┐рд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╡реЙрд▓реНрдпреВрдо рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВ:

# Volume paths
environment:
  - &volume_a        volume-a:/usr/share/my_project/volumes/volume-a
  - &volume_b        volume-b:/usr/share/my_project/volumes/volume-b
  - &volume_c        volume-c:/usr/share/my_project/volumes/volume-c
  - &volume_d        volume-d:/usr/share/my_project/volumes/volume-d

рдЕрдм рдореИрдВ рдЗрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

volumes:
  - volume-a:
  - volume-b:
  - volume-c:
  - volume-d:

services:
  some-service:
    image: some-image
    volumes:
      - *volume_a
      - *volume_b

  some-other-service:
    image: some-other-image
    volumes:
      - *volume_b
      - *volume_c

  some-third-service:
    image: yet-another-image
    volumes:
      - *volume_a
      - *volume_b
      - *volume_c
      - *volume_d

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

рдареАрдХ рд╣реИ, рдореИрдВ @JanNash рдХреЛ рд╕рдордЭрддрд╛

рд▓реЗрдХрд┐рди рдХрдИ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдВрдХрд░ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИрдВред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рд╣реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЖрдк рдпрд╣рд╛рдВ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдордЪрд╛рди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдЬрдм рдЖрдк рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк devel.yaml рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЖрдк prod.yaml ред test.yaml ред рдпреЗ рд╕рднреА common.yaml рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ .env рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рдЪрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред

рдкреНрд░рддреНрдпреЗрдХ рдХреА рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ:

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

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

рдореИрдВрдиреЗ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рд░реВрдк v3 рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рди рдХреЗрд╡рд▓ extends рдЕрд╕рдорд░реНрдерд┐рдд рд╣реИ, рдмрд▓реНрдХрд┐ .env , рдЗрд╕рд▓рд┐рдП рдЕрднреА рдпрд╣ рдПрдХ рд░рдЦрд░рдЦрд╛рд╡ рджреБрдГрд╕реНрд╡рдкреНрди рд╣реЛрдЧрд╛ ( .env рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рдЕрдзрд┐рдХ) рдЭреБрдВрдб рдФрд░ рдбреАрдЖрд░рд╡рд╛рдИ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╕рдордп, рд╣рдордиреЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рдбреАрдЖрд░рд╡рд╛рдИ рдХреЛ рдЪреБрдирд╛, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рджрд┐рди рд╣рдореЗрдВ рдЭреБрдВрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдФрд░ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЙрд╕ рджрд┐рди рджреЛрдиреЛрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдлрд┐рд░ рд╕реЗ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛... я╕П

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

... рдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрд▓рдЧ рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рд╕рдм рдХреБрдЫ рдмрдирд╛рддрд╛ рд╣реИ (рдореИрдВ ansible-container рдкрд░ рднреА рдирдЬрд░ рд░рдЦ рд░рд╣рд╛ рд╣реВрдВ)ред рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ "рдареАрдХ" рдирд╣реАрдВ рд╣реИред

https://github.com/moby/moby/issues/31101#issuecomment -301212524 рдореЗрдВ рд▓рд┐рдВрдХ рдореЗрдВ YAML рдПрдВрдХрд░ рдХреЗ рдХрд╛рдордХрд╛рдЬреА рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ README рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрдирд╛ рдФрд░ рдЖрдЬ рдлрд┐рд░ рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛, рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@ рдЬрдирдирд╛рд╢

@Yajo рдореИрдВ рдЖрдкрдХреЛ рд╕реБрдирддрд╛ рд╣реВрдВ рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ рдФрд░ рдпрд╣ рдкрд░рд┐рдорд╛рдг рдХреЗ рдХреНрд░рдо рд╕реЗ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдпрджрд┐ docker/moby/docker-compose (рдЬреЛ рднреА рд╕рд╣реА рд╕рдВрджрд░реНрдн рд╣реИ) рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд, DRY рд╕рдорд╛рдзрд╛рди рдерд╛ред . рдЖрдЗрдП рд╕рднреА рдЖрд╢рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЬрд▓реНрдж рд╣реА рдЖрдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рд╕реЗ рдмрд╣реБрдд рдЦреБрд╢ рд╣реВрдВ

~ рдЧрд╛рдпрдм .env рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рднреА рд╣реИрдХ рдХрд┐рдпрд╛ (рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрднреА рддрдХ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реА рдмрд╛рдд рдереЛрдбрд╝реА рд╕рд╕реНрддреА рд╣реИ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ :))ред рд╡рд┐рднрд┐рдиреНрди рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдореЗрдВ env vars (рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдЫрд╡рд┐ рд╕рдВрд╕реНрдХрд░рдг/рдЯреИрдЧ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрдЯреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдореЗрд░реЗ рд▓рд┐рдП рдЕрднреА, рдпрд╣ рд╕реНрдерд╛рдиреАрдп-рд╡рд┐рдХрд╛рд╕ рдФрд░ рдПрдХ рдЫреЛрдЯрд╛ рджреЗрд╡-рд╕рд░реНрд╡рд░ рд╣реИ), рдореИрдВ рджреЛ рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, local.env рдФрд░ development.env рдФрд░ рдореЗрд░реЗ рдЖрджреЗрд╢реЛрдВ рдХреЛ рдХреЗрд╡рд▓ docker-compose <command> рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рдпрд╛ рддреЛ рд╕рдВрдмрдВрдзрд┐рдд .env рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдиреЗ рд╢реЗрд▓ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реНрд░реЛрдд рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╛ рдореИрдВ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ: (. local.env && docker-compose <command>) ред рдЕрднреА рднреА рдПрдХ рд╣реИрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕рд╕реЗ рдХрд╛рдлреА рдЦреБрд╢ рд╣реВрдВред~

рдПрдХ рдЕрдЪреНрдЫрд╛ рд▓реЛ, рддреБрдо рд╕рдм

рд╢рд╛рдпрдж рдкрд░рд┐рдорд╛рдг рдХреЗ рджреЛ рдХреНрд░рдо рднреА :D

@JanNash рд░реБрдХреЛ! рдХреНрдпрд╛ .env рдЕрдм 3 рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ?

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рдореИрдВрдиреЗ рдЕрднреА рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдкрдврд╝рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд╣реАрдВ рдерд╛ред
рдореИрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ local.env рдФрд░ development.env рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдореИрдВрдиреЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рддреЛ рдореБрдЭреЗ рдСрдЯреЛрдПрдиреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рдерд╛: рдбреА
рд╕рдВрднрд╛рд╡рд┐рдд рднреНрд░рдо рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред

рдЖрд╣, @Yajo рдиреЗ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд▓рд╛рдкрддрд╛ .env рд╕рдорд░реНрдерди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред
рдХреНрдпрд╛ рдЖрдк рд╡рд┐рд╕реНрддреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, @Yajo?

рдУрд╣ рд╕реЙрд░реА, рдореЗрд░реА рдЧрд▓рддреАред рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рд╕реНрд╡рддрдГ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп

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

рдирдорд╕реНрддреЗ, рдореЗрд░рд╛ рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИ - рдХрдм? рдЬрдм "рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд" рд╕рдорд░реНрдерди v3 рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛?

@JanNash рдЖрдк

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

+1 рдЭреБрдВрдб рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдореЗрдВ рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

рдирдорд╕реНрддреЗ,
рд╣рдо рдПрдХ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдХрдИ рдЧрд┐рдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдлреИрд▓рд╛ рд╣реБрдЖ рд╣реИ (рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдЗрд╕рдХреА рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдлрд╛рдЗрд▓ рд╣реИ)ред
рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХрд╛ рдиреЗрддреГрддреНрд╡ рдПрдХ "рд░реВрдЯ" рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ: рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ extends рд╕реБрд╡рд┐рдзрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рддреЛ +1 рднреА рдЭреБрдВрдб рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдореЗрдВ рд╕рдорд░реНрдерди рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП
рдзрдиреНрдпрд╡рд╛рджред

рдЖрдк рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдИрдПрдПрдордПрд▓ рд╕рд░рд▓ рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ( &default , <<: *default ):

version: '3'
services:
  worker: &default
    build: .
    command: bundle exec rake jobs:work
    env_file:
      - .env
    volumes:
      - .:/app
    depends_on:
      - db
      - redis
    links:
      - db:postgres
  web:
    <<: *default
    command: bundle exec puma -C config/puma.rb -p 3000
    ports:
      - "3000:3000"
  spring:
    <<: *default
    command: bundle exec spring server

рдмреЗрд╢рдХ, extends рд╕реБрд╡рд┐рдзрд╛ рдмреЗрд╣рддрд░ рд╣реИ

рдЬрдм рдЖрдк рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреИрд╕рд╛ рд░рд╣реЗрдЧрд╛?

Yaml рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рд╣реИ :(

рдХреНрдпрд╛ рдбреЛрдХрд░ рдХреЗ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ рдХреА рдУрд░ рд╕реЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИ? рдХреНрдпрд╛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреНрдпрд╛ рдРрд╕рд╛ рд╣реА рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ? рдЕрдЧрд░ рдирд╣реАрдВ рддреЛ рдХреНрдпреЛрдВ рдирд╣реАрдВ..?

@quolpr , рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ "YAML рд╕рд░рд▓ рд╡рд┐рд░рд╛рд╕рдд" рдХреЛрдб рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ extends рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ "рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк" (рдпрд╛рдиреА &default ) рдХреЛ рд╣рдореЗрд╢рд╛ рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ worker рдирд╛рдордХ рд╕реЗрд╡рд╛ред рдЗрд╕рд▓рд┐рдП рдХреМрди рд╕реА рд╕реЗрд╡рд╛ a) рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, b) рдЕрд╡рд╛рдВрдЫрд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИред

рд╡реИрд╕реЗ рднреА, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред

@laugimethods рдЖрдк

version: '3'
services:
  spring:
    build: ./app
    command: /bin/sh -c "bundle exec spring server"
    volumes: &default_volumes
      - ./app:/app:delegated
      - bundle:/bundle:nocopy
  worker:
    build: ./app
    command: bundle exec sidekiq -v -C config/sidekiq.yml
    volumes: *default_volumes

( &default_volumes рдФрд░ *default_volumes )

рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ extends рдлреАрдЪрд░ рдХреЛ рдХреНрдпреЛрдВ рд╣рдЯрд╛рдпрд╛ рдЧрдпрд╛

FYI рдХрд░реЗрдВ, рд▓рд╛рдкрддрд╛ "рд╡рд┐рд╕реНрддрд╛рд░" рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдм .yaml рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛/рд╡рд┐рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
https://github.com/Logimethods/smart-meter/blob/master/README.md#docker -compose

рдХрд╛рдо рдмрдврд╝рд╛рддрд╛ рд╣реИ, рд╕рд░рд▓ рдФрд░ рдкрд░рд┐рдкрдХреНрд╡ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдХреЛрдИ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рдХреБрдЫ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реИ рддреЛ рдмрд╕ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдХрд╛рдЯ рди рджреЗрдВ

рдХреНрдпрд╛ рдореИрдВ extends рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрдЪреНрдЫрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рд╕реНрдкрд╖реНрдЯ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдорд╛рдВрдЧ рд╕рдХрддрд╛ рд╣реВрдВ? рдореИрдВ рдЗрд╕реЗ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдЧрд┐рдЯ рд╕рдмрдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЗ рднреАрддрд░ рдирд┐рд╣рд┐рдд рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХреНрд░реЙрд╕-рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рд╡рд╛рдпрд░рд┐рдВрдЧ рдЖрджрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рд╡рд╛рд▓реЗ рдореЗрдЯрд╛-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдХрдИ docker-compose.yml рдлрд╛рдЗрд▓реЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдХреНрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ extends рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд░реЛрдд-рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдЬрд╛рдВрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдЗрдВрдЯрд░рдХрдиреЗрдХреНрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА? рдпрд╛ рдХреНрдпрд╛ рдореИрдВрдиреЗ v3 рдореЗрдВ рдХрд╣реАрдВ рдХреБрдЫ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ рд╣реИ?

рдореИрдВ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реЗрдЯ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ extends рдХрд╛ рднрд╛рд░реА рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдкрдврд╝реЗрдВ: рдореИрдВ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП extends рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ)ред

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

рдореИрдВ links рдФрд░ volume-from рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдмреЗрд╕ рд╡рд╛рдИрдПрдордПрд▓ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИред

рдХрд╛рд░ рдХреЗ рдкрд╣рд┐рдпреЗ рдХреЛ рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рд╣рдЯрд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕реЗ рдХрд╛рд░ рдХреЛ рдЙрд▓реНрдЯрд╛ рдХрд░рдиреЗ рдХреА рдЖрджрдд рд╣реЛ рдЬрд╛рддреА рд╣реИ... рд╣реИ рдирд╛?

рдкреАрдПрд╕: рдиреЛрдк рдФрд░ рдПрдВрдХрд░ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЬрдЯрд┐рд▓рддрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ ...

рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ:

common/common.yml

services:
  web:
    image: alpine:3.6
    build: .
    environment:
      DOMAIN:
      PREFIX:

dev/docker-compose.yml

services:
  web:
    extends: ../common/common.yml
    service: web
  ports:
    - "8080:8080"

prod/docker-compose.yml

services:
  web:
    extends: ../common/common.yml
    service: web
  image: the-prod-image:latest-release
  ports:
    - "80:80"
    - "80:443"
  environment:
    NEW_RELIC_KEY:

рдЖрдк extends рдмрд┐рдирд╛ DRY рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рдХреИрд╕реЗ рд░рдЦрддреЗ рд╣реИрдВ?

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореБрдЭреЗ рдЗрд╕рдХреЗ рдХрд╛рд░рдг рд╕рдВрд╕реНрдХрд░рдг 2.1 рд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред

@teodorescuserban ,

рдбреЗрдЬрд╝реА рдЪреЗрдирд┐рдВрдЧ -f рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдлрд╛рдЗрд▓реНрд╕

рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рджрд┐рдХреНрдХрдд рд╣реИ? рдЖрдк docker-compose рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдЦреБрдж рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ:

рдЖрдо/рдЖрдо.yml

services:
  web:
    image: alpine:3.6
    build: .
    environment:
      DOMAIN:
      PREFIX:

рджреЗрд╡/рдбреЙрдХрд░-compose.yml

services:
  web:
    ports:
      - "8080:8080"

рдЙрддреНрдкрд╛рдж/docker-compose.yml

services:
  web:
    image: the-prod-image:latest-release
    ports:
      - "80:80"
      - "80:443"
    environment:
      NEW_RELIC_KEY:

рдЖрджреЗрд╢

docker-compose -f common/common.yml -f dev/docker-compose.yml -p myproject up --build
docker-compose -f common/common.yml -f prod/docker-compose.yml -p myproject up --build

рдореБрдЭреЗ рдЙрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд╕реАрдПрд▓рдЖрдИ рдХреЛ рдмрдирд╛рддрд╛ рд╣реИ, рдпрд╣ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдпрд╣ extends рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

docker-compose.yml

version: "3"  # or whatever
extend:
  - ./common/common.yml
  - ./dev/docker-compose.yml
services: # Not required now
  # etc.

рдЗрд╕ рддрд░рд╣ рдЖрдк рдПрдХ рдПрдХрд▓ docker-compose.yml рдлрд╝рд╛рдЗрд▓ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреА рдЬрд╝рд░реВрд░рдд рдХреА рд╣рд░ рдЪреАрдЬрд╝ рдХрд░рддреА рд╣реИред

рдПрдХ рдЙрдкрдпреЛрдЧреА рд╡рд┐рдХрд▓реНрдк COMPOSE_FILE env var рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

@Yajo

COMPOSE_FILE env var рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧреА рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛ред

https://docs.docker.com/compose/reference/envvars/#compose_file рд╕реЗ :

рдпрд╣ рдЪрд░ рдкрде рд╡рд┐рднрд╛рдЬрдХ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХреА рдЧрдИ рдПрдХрд╛рдзрд┐рдХ рд▓рд┐рдЦреЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ (рд▓рд┐рдирдХреНрд╕ рдФрд░ рдореИрдХреЛрдЬрд╝ рдкрд░ рдкрде рд╡рд┐рднрд╛рдЬрдХ : , рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдпрд╣ ; )ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: COMPOSE_FILE=docker-compose.yml:docker-compose.prod.yml ред рдкрде рд╡рд┐рднрд╛рдЬрдХ рдХреЛ COMPOSE_PATH_SEPARATOR рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@ dermeister0 рдЖрдк https://github.com/ImmobilienScout24/yamlreader рдЬреИрд╕реЗ рдЯреВрд▓ рдХреЗ рд╕рд╛рде рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдорд░реНрдЬ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

> yamlreader common/common.yml prod/docker-compose.yml > docker-compose-prod.yml
> docker-compose -f docker-compose-prod.yml -p myproject up --build

> cat docker-compose-prod.yml
services:
    web:
        build: .
        environment:
            DOMAIN: null
            NEW_RELIC_KEY: null
            PREFIX: null
        image: the-prod-image:latest-release
        ports:
        - 80:80
        - 80:443

@ dermeister0 рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдЗрд╕рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХрд╛ рдПрдХ рдХрдард┐рди рддрд░реАрдХрд╛ рд╣реИред extends рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдХрд┐ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЗрдЬрд╝реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреИрд╕реЗ рд╣реИред рдЬрдмрдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЬреА рд╕рдХрддрд╛ рд╣реВрдВ, рдореИрдВ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рдЕрдкрдиреЗ рдкреНрд░рд┐рдп рджреЗрд╡реЛрдВ рдкрд░ рдХрднреА рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдХреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рдереА рдХрд┐ COMPOSE_FILE env рд╡реИрд░рд┐рдПрдмрд▓ рдореЗрдВ рдХрдИ рдорд╛рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдзрдиреНрдпрд╡рд╛рдж @gsong ! рдпрд╣ рдХрдорд╛рд▓ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдореИрдВ рдЗрд╕реЗ .env рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ)ред рдпрд╣рд╛рдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдЖрдзрд╛рд░/рд╕рд╛рдорд╛рдиреНрдп рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдРрд╕реА рд╕реЗрд╡рд╛рдПрдВ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬрд┐рдирдХреА рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

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

рд╕рд╛рде рд╣реА, docker-compose.override.yml рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИред

https://docs.docker.com/compose/extends/#understanding -multiple-compose-files

рдореИрдВ рд╕рдВрд╕реНрдХрд░рдг 3.3 рдХреЗ рд╕рд╛рде рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:

  • docker-compose.yml рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк рдФрд░ рд╕реЗрд╡рд╛рдПрдВ рдбрд╛рд▓реЗрдВ;
  • рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдХрд╛рд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП docker-compose.override.yml рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП xdebug рдХреА рддрд░рд╣);
  • рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП docker-compose.staging.yml рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдиреЛрдЯ: рдореИрдВ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдбреЙрдХрд░ рдирд╣реАрдВ рдЪрд▓рд╛рддрд╛ред

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдВ рдЖрд╕рд╛рдиреА рд╕реЗ docker-compose build рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЬрдм рдореИрдВ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рдкрд░ рддреИрдирд╛рдд рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:

docker-compose -f docker-compose.staging.yml -f docker-compose.yml build

рдореИрдВ рдЕрдкрд╛рдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдордВрдЪрди рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╡рд░реНрдЪреБрдЕрд▓ рд╣реЛрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд╣реАрдВ рд╣реИрдВред рдореИрдВрдиреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╛рдЗрд▓реЗрдВ рд░рдЦрдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рд╡реИрдз рджреГрд╖реНрдЯрд┐рдХреЛрдг <IfDefine> рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ (рдЬреЛ рдореИрдВрдиреЗ yml рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП ssl рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдФрд░ рдореИрдВ рдЯреАрдПрд▓рдбреА рдФрд░ рдбреЛрдореЗрди рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ www.example.local http://www.example.local/ :8080 рдФрд░ www.staging.example.com http://www.staging.example.com рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

рдкрде рд╕рднреА рд░рд┐рд╢реНрддреЗрджрд╛рд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдХрд┐рд╕реА рднреА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред

рдореЗрд░реЗ 2 рд╕реЗрдВрдЯ

-рдлрд┐рд▓рд┐рдкреНрдкреЛ

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдерд╛:

  • рдЖрдо.рд╡рд╛рдИрдПрдордПрд▓
  • devel.yml -> рдЖрдо рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ред yml
  • prod.yml -> рдЖрдо рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ред yml
  • docker-compose.yml -> рд╕реНрдерд╛рдиреАрдп, рдЧрд┐рдЯ-рдЕрдирджреЗрдЦрд╛, рд╡рд╛рдВрдЫрд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╕рд┐рдорд▓рд┐рдВрдХ (рдбреЗрд╡реЗрд▓ рдпрд╛ рдкреНрд░реЛрдб)ред

https://github.com/moby/moby/issues/31101#issuecomment -329482917 рдФрд░ https://github.com/moby/moby/issues/31101#issuecomment -329512231 рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛, рдЕрдм рдореИрдВ рдПрдХ рдЕрд▓рдЧ рд╕реНрдХреАрдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ v3 рдкрд░ рдЬрд╛ рд╕рдХрддрд╛ рд╣реВрдВ:

  • docker-compose.yml -> рдкрд╣рд▓реЗ рдХреНрдпрд╛ рдерд╛ common.yml
  • devel.yml -> рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ docker-compose.yml
  • prod.yml -> рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ docker-compose.yml
  • docker-compose.override.yml -> рд╕реНрдерд╛рдиреАрдп, рдЧрд┐рдЯ-рдЕрдирджреЗрдЦрд╛, рд╡рд╛рдВрдЫрд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╕рд┐рдорд▓рд┐рдВрдХ (рдбреЗрд╡реЗрд▓ рдпрд╛ рдкреНрд░реЛрдб)ред

рдореИрдВ env рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдИ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИрдХ рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЧрдИ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж! (рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореБрдЭреЗ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдареАрдХ рд╕реЗ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛)ред

рдкреБрдирд╢реНрдЪ: рдлрд┐рд░ рднреА, extends рд╡рд╛рдкрд╕ рдЖрдирд╛ рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рдХрд▓реНрдк рд╣реИред рдореИрдВ

@ рд╢рд┐рди- рдкрд╣рд▓реЗ рдореИрдВ extends рдлреАрдЪрд░ рдХреЛ 3.0 рдореЗрдВ рдЧрд╛рдпрдм рджреЗрдЦрдХрд░ рдмрд╣реБрдд рдирд┐рд░рд╛рд╢ рдерд╛, рд▓реЗрдХрд┐рди YAML рдПрдВрдХрд░ (рдЙрджрд╛рд╣рд░рдг: https://github.com/JanNash/docker-noop) рдПрдХ рд╣реЛрдЧрд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдиред

рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдпрд╣ рд╣реИ рдХрд┐, рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреА рддрд░рд╣, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдПрдВрдХрд░ рдХреЛ рдЕрдкрдиреА docker-compose.yml рдлрд╝рд╛рдЗрд▓ рдХреЗ рдХреБрдЫ рдорд╛рдиреНрдп рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред

рдХреНрдпрд╛ рд╣рдо рдПрдХ (рд╢реАрд░реНрд╖-рд╕реНрддрд░) templates рд╕рдВрдкрддреНрддрд┐ рдпрд╛ рдЫрд┐рдкреА рд╣реБрдИ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ GitLab рдореЗрдВ рдПрдВрдХрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

@ schmunk42 https://github.com/docker/cli/pull/452 рдкрд░ рдПрдХ рдирдЬрд░ рдбрд╛рд▓реЗрдВ

docker-compose.override.yml рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдУрд╡рд░рд░рд╛рдЗрдб рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдУрд╡рд░рд░рд╛рдЗрдб рдХреА рдПрдХ рдкрд░рдд рд╣реИред

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

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

FYI рдХрд░реЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдмрд╛рд░ рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд x- рд╕рд╛рде рд╣реИрдХ, рдФрд░ .env рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ COMPOSE_FILE рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ docker-compose рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рднреА рдЬреЛрдбрд╝рдирд╛, docker- compose.override.yml рдХреЛ рдЕрдм рддрдХ рдореЗрд░реЗ рд╕рд╛рдордиреЗ рдЖрдП рд╣рд░ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд╛рдИрдПрдордПрд▓ рдПрдВрдХрд░ рднреА рдПрдХ рдЕрдЪреНрдЫреА рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддрд╛ рд╣реВрдВред

x- рд╣реИрдХ рдмреНрдпреВрдЯреА рд╕реЗ рдмрд╣реБрдд рдЦреБрд╢ рдирд╣реАрдВ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рд░рд╣ рд╕рдХрддрд╛ рд╣реВрдВред

рдЖрдкрдХреЗ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рджреЛрд╕реНрддреЛрдВ!

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ extends рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд╛рд░рд╛рдЬрд╝рдЧреА рд╣реЛ рд░рд╣реА рд╣реИ рдФрд░ рдпрд╛ рддреЛ v3 рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рд░реЛрдХ рд░рд╣реА рд╣реИ рдпрд╛ рд╣реИрдХ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗ рд░рд╣реА рд╣реИред рдореБрдЭреЗ рдПрдХ "рдЯреЗрдореНрдкрд▓реЗрдЯ" (рдпрд╛ рд╕рд╛рд░) рд╕реЗрд╡рд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкрд╕рдВрдж рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рдЪреАрдЬреЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ (рдЬреИрд╕реЗ рдЕрджреНрдпрддрди рдиреАрддрд┐рдпрд╛рдВ)

рдореИрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЧреЛрд▓рдВрдЧ рдлрд╝рд┐рд▓реНрдЯрд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ extends рд╕рд╛рде рдПрдХ рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рд╛рдл v3 рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рд▓ рдХрд┐рдП рдЧрдП рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕рд╛рде рдереВрдХ рд╕рдХрддрд╛ рд╣реИ:
рд╕рдВрдХрд▓реНрдк-рд░рдЪрдирд╛ рдбреЙрдХрд░ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди -c docker-compose.yaml
(рдпрд╛ docker-compose up)

рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛/рдЧреЙрдЪрд╛ рдХреНрдпреЛрдВ?

@pnickolov рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЦреВрдмрд╕реВрд░рдд рд╣реЛрдЧрд╛ред

рдореИрдВ ansible-container рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ (рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ ansible рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдХрд╛рдо рдкрд░ рдирд╣реАрдВ рд╣реИ), рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реА рдЬрд░реВрд░рдд рдХреА рд╣рд░ рдЪреАрдЬ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдкрдХреА рддрд░рд╣ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдзрд┐рдХ рдмреЗрд╣рддрд░ рд╣реЛрдЧреА (рдХрдо рдордВрдерди)

рдЬрдм рддрдХ рдпрд╣ extends: рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдкреБрди: рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА!

рдареАрдХ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ extends рд╡рд┐рдХрд▓реНрдк рдорд┐рд▓ рдЧрдП рд╣реИрдВ ...

рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдореЛрдмреА рдХрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рдмрдВрдзрди рд╕рдВрдЧрддрддрд╛ рдХреЛ рдПрдХ рдкреНрд░рдореБрдЦ рддрддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдП рд░рдЦрдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЕрдкрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдХреА рдЕрдиреБрдХреВрд▓рддрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рддреИрдирд╛рдд рдмрдбрд╝реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдПред рдЬрдм рдЗрд╕ рдмрд╛рдд рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ extends рдЬреИрд╕реА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдмрдиреА рд░рд╣реЗрдВрдЧреА рддреЛ рд╣рдо рдбреЙрдХрд░ рдЭреБрдВрдб / рдбреЙрдХрд░ рдИрдИ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдЬреЛрд░ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ
рдПрдХ рдЕрдЪреНрдЫреА рдкреНрд░рддрд┐рд╖реНрдард╛ рдХреЛ рдЬреАрддрдирд╛ рдХрдард┐рди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╣рд╛рд░рдирд╛ рдЖрд╕рд╛рди...

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рджреЗрд╢реА YAML рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд╛рдо рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдУрдВ extends рдореЗрдВ v2 рдмрд▓реНрдХрд┐ рдПрдХ рдХрд╕реНрдЯрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ ansible рдХреА рддрд░рд╣ рдПрдХ рдмрдбрд╝рд╛ рд╕рдорд╛рдзрд╛рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ред рдореБрдЭреЗ рдкрд╣рд▓реЗ рднреА рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рдереА рдФрд░ рдХрдИ .yml рдлрд╝рд╛рдЗрд▓реЛрдВ рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬреИрд╕реЗ рд╕рдорд╛рдзрд╛рди рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдХрдирд╡рд░реНрдЯрд░ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдерд╛ред (https://github.com/schmunk42/yii2-yaml-converter-command) - рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рдерд╛ рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╕рдорд╛рдзрд╛рдиред

рдореЗрд░реЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░рдирд╛ рднреА рдареАрдХ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдиреАрддрд┐ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдЖрдк рдкреБрд░рд╛рдиреЗ рд╕рд╛рдорд╛рди рдХреЛ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ, рднрд▓реЗ рд╣реА рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣рдорд╛рд░реА рддрд░рдл рд╕реЗ рдХреБрдЫ рдХрд╛рдо рд╣реЛред

@ schmunk42 рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛

  • рд╣рдЯрд╛рдИ рдЧрдИ рд╕реБрд╡рд┐рдзрд╛ рдЕрдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ рдпрд╛ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрд╡рд░реЛрдзрдХ рд╣реИ
  • рдЗрд╕рдХреА рдкрд╣рд▓реЗ рд╕реЗ рдШреЛрд╖рдгрд╛ рдХреА рдЬрд╛рддреА рд╣реИ
  • рдПрдХ рдкреНрд░рд╡рд╛рд╕ рдкрде рддреБрд░рдВрдд рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ (рдореЗрд░реА рдкреБрд╕реНрддрдХ рдореЗрдВ) extends рдХреЗ рдмрд╣рд┐рд╖реНрдХрд░рдг рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ ...

@laugimethods рдЖрдкрдХреЛ v3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИ?

@ schmunk42 рдЭреБрдВрдб рдХреЗ рдХрд╛рд░рдг:

рд╕рдВрд╕реНрдХрд░рдг 3.x, рдирд╡реАрдирддрдо рдФрд░ рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╕рдВрд╕реНрдХрд░рдг, рдЬрд┐рд╕реЗ рдХрдВрдкреЛрдЬрд╝ рдФрд░ рдбреЙрдХрд░ рдЗрдВрдЬрди рдХреЗ рдЭреБрдВрдб рдореЛрдб рдХреЗ рдмреАрдЪ рдХреНрд░реЙрд╕-рд╕рдВрдЧрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ: '3' рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг: '3.1', рдЖрджрд┐, YAML рдХреА рдЬрдбрд╝ рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ред

рдбреЙрдХрд░ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХрдорд╛рдВрдб "3.0" рдпрд╛ рдЙрд╕рд╕реЗ рдКрдкрд░ рдХреЗ рдХрд┐рд╕реА рднреА рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ

рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рди рдХреЗрд╡рд▓ extends рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдмрд▓реНрдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА (рджрд░реНрджрдирд╛рдХ) рдмрд╣рд┐рд╖реНрдХрд╛рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ ...

рд╣рд╛рдБ, рд╣рдо рд╕реНрд╡рд╛рд░реНрдо рдореЛрдб рдХреЗ рдХрд╛рд░рдг рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдореИрдВрдиреЗ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЦреБрдж рд╕реЗ рдкреВрдЫрд╛ рдХрд┐ рдЖрдЦрд┐рд░ рдбреЙрдХрд░ рд╕реАрдПрд▓рдЖрдИ рдЕрдм --composer-file рдЗрдирдкреБрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХреНрдпреЛрдВ рд╣реИред рд▓реЗрдХрд┐рди docker/swarm рд╕рд╛рде рд╣рдорд╛рд░реЗ рд╕реАрдЦрдиреЗ рд╕реЗ рдпрд╣ рдПрдХ (рд╕реНрд╡-рдкреНрд░рдмрдВрдзрди) рдЭреБрдВрдб рдкрд░ рдвреЗрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рдЬрдЯрд┐рд▓ рдЪреАрдЬ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ рдФрд░ рдХрдИ рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдг рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдЗрдВрдЬрди рдореЗрдВ рдХреНрдпреЛрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдореЗрд░реЗ рдХреБрдЫ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП ... v2 рд╕реЗ v3.4 рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред

рдореЗрд░реА рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ:

  • volumes_from рдЬреИрд╕реЗ рдЕрдиреНрдп рдЕрд╕рдорд░реНрдерд┐рдд рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╡реИрд╕реЗ рднреА рдЗрд╕реЗ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ
  • .env рдлрд╝рд╛рдЗрд▓реЗрдВ (рдЬреИрд╕реЗ docker-compose ) рдХрд╛ рдбреЙрдХрд░ рд╕реАрдПрд▓рдЖрдИ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИ
  • рдПрдХрд╛рдзрд┐рдХ рд▓рд┐рдЦреЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ ( docker stack deploy -c docker-compose.yml -c docker-compose.override.yml doro ) рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рднреА рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╡рд┐рд▓рдп рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВ - рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП docker-compose config рдЬреИрд╕реА рдХреЛрдИ рдХрдорд╛рдВрдб рднреА рдирд╣реАрдВ рд╣реИ
  • docker-compose рд▓рд┐рдП "рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди" (рдкреВрд░реНрд╡-рд░рд┐рд▓реАрдЬрд╝) рдмрд╛рдЗрдирд░реА рдирд╣реАрдВ рд╣реИ рдЬреЛ v3.4 рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ; рдбреЙрдХрд░ рдХрд┐рдирд╛рд░реЗ рдХреА рддрд░рд╣
  • --scope swarm рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░реА рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рд╕реАрд╕реА: @ рд╣реИрдВрдбрдХреЛрдб

рдирд╡реАрдирддрдо рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

  • рдбреЛрдХрд░ 17.09.0-рд╕реАрдИ
  • docker-compose 1.17.0dev

рдореИрдВ рдЕрдм _extend_ рдФрд░ _noop_ рдХреЗ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдЪреАрдЬреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рд╕реВрдЦрд╛ рд░рдЦрддрд╛ рд╣реИ
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ

base.yml (рд╕рд╛рдЭрд╛ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ, рдпрд╣ рдПрдХ рдорд╛рдиреНрдп yaml рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣реИ, рдЗрд╕рд▓рд┐рдП _docker-compose config_ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рд▓рдп рдпреЛрдЧреНрдп рд╣реИ)

version: '3.4'
networks:
  net_back:
    external: true

base-inject.yml (рд╕рд╛рдЭрд╛ рдПрдВрдХрд░ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ base.yml рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдПрдВрдХрд░ рдХреЛ рд╡рд┐рднрд┐рдиреНрди yaml рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрдиреНрд╣реЗрдВ foo.yml рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрджрд░реНрд╢ рддрд░реАрдХрд╛ рдирд╣реАрдВ)

x-logging: &logging
  driver: json-file
  options:
    max-size: "50m"
    max-file: "2"

foo.yml (рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдЯреИрдХ рдкрд░рд┐рднрд╛рд╖рд╛, base.yml рд╕реЗ рд╕рдВрджрд░реНрдн рдСрдмреНрдЬреЗрдХреНрдЯ, рдмреЗрд╕-рдЗрдВрдЬреЗрдХреНрдЯ.yml рд╕реЗ рдПрдВрдХрд░ рдФрд░ foo-dev.yml рдореЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рдХреА рдЧрдИ

version: '3.4'
[[base-inject]]
services:
  foo:
    image: ${DOCKER_REGISTRY}/foo:${IMAGE_VERSION}
    volumes:
      - type: volume
        source: "volfoo"
        target: "/foo"
    networks:
     - net_back
    logging:
      <<: *logging

foo-dev.yml (рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реНрдЯреИрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░)

version: '3.4'
services:
  foo:
    ports:
      - "8080:80"
volumes:
  volfoo:
    name: '{{index .Service.Labels "com.docker.stack.namespace"}}_volfoo_{{.Task.Slot}}'
    driver: local

рдлрд┐рд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдЖрджреЗрд╢:

docker stack rm stack_foo && echo "waiting..." && sleep 3 &&
  cat foo.yml | sed -e '/base-inject/ {' -e 'r base-inject.yml' -e 'd' -e '}' > ./foo-temp1.yml &&
  export $(sed '/^#/d' ./dev.env | xargs) &&
  docker-compose -f base.yml -f ./foo-temp1.yml -f foo-dev.yml config > ./foo-temp2.yml
  docker stack deploy --with-registry-auth --prune --compose-file ./foo-temp2.yml stack_foo
  1. рдкреБрд░рд╛рдиреЗ рдвреЗрд░ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ
  2. рд╕реНрдЯреИрдХ рд╣рдЯрд╛рдиреЗ рдпреЛрдЧреНрдп рдХреЗ рдкреНрд░рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ
  3. рдПрдВрдХрд░ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВ, tmp рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ
  4. рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдПрдирд╡реА рдлрд╝рд╛рдЗрд▓ рдЪрд░ рдкрдврд╝реЗрдВ + рд╕реЗрдЯ рдХрд░реЗрдВ
  5. рддреАрди рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдорд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
  6. рдорд░реНрдЬ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ

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

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ!
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрдврд╝рдирд╛ рдирд╡реАрдирддрдо рдбреЛрдХрд░ рд░рд┐рд╣рд╛рдИ рдХреЗ рд▓рд┐рдП ( v17.09 ) рд╣реИ рдФрд░ рдпрд╣ рднреА v17.06 рд░рд┐рд╣рд╛рдИ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

$ head -n1 docker-compose.yml
version: '3'

рд▓реЗрдХрд┐рди compose up рдкреИрджрд╛рд╡рд╛рд░

ERROR: The Compose file './docker-compose.yml' is invalid because:
Unsupported config option for services.admin_application: 'extends'

extends рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордпред
рд╕рд╛рде рд╣реА, рдореБрдЭреЗ extends рдХреЛ compose рдЪреЗрдВрдЬрд▓реЙрдЧ рдореЗрдВ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред

рдЕрдм рдпрд╣ рдХреМрди рд╕рд╛ рд╣реИ ?!
рдЗрд╕ рддрд░рд╣ рдХреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдХреБрдЫ рдЕрд╕реНрдкрд╖реНрдЯ рдЬреАрдердм рдореБрджреНрджреЗ рдХреЗ рдЕрдВрджрд░ рдвреВрдВрдврдирд╛ рдпрд╛ рдЫрд┐рдкрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


$ docker --version
Docker version 17.09.0-ce, build afdb6d4

$ docker-compose --version
docker-compose version 1.16.1, build 6d1ac21

@jottr , рдбреЙрдХреНрд╕ рджреЗрдЦреЗрдВ :

рд╡рд┐рд╕реНрддреГрдд рдХреАрд╡рд░реНрдб рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд╕реНрдХрд░рдг 2.1 рддрдХ рдкрд╣рд▓реЗ рдХреЗ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИ (рджреЗрдЦреЗрдВ v1 рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдФрд░ v2 рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд), рд▓реЗрдХрд┐рди рдХрдВрдкреЛрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг 3.x рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред

рддреЛ рдЕрдЧрд░ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ extends рдЖрдк рдкрд░ рдирд┐рд░реНрднрд░ рд░рд╣рдирд╛ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ version: '2.1' ред

рдореЗрд░рд╛ рдмреБрд░рд╛ред рдпрд╣ рдЕрднреА рднреА рдПрдХ рд▓рд╛рд▓ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореЗрд░рд╛ рдмреБрд░рд╛ред рдпрд╣ рдЕрднреА рднреА рдПрдХ рд▓рд╛рд▓ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@jottr рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдмрдирд╛рдиреЗ рдпрд╛ рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ https://github.com/docker/docker.github.io/issues/5340

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдиреБрд╕рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ docker-compose-override.yml :
yaml version: "3.4" services: common: extra_hosts: - "host1:172.28.5.1" - "host2172.28.5.2" - "host3:172.28.5.3" networks: default: external: name: "common-network"
рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдХрдИ рдЕрдиреНрдп docker-compose.yml рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд_рд╣реЛрд╕реНрдЯ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд┐рд╕реНрддрд╛рд░ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ?

yaml version: "3.4" services: mongo: image: "mongo" container_name: "mongo" hostname: "mongo" volumes: - "/opt/docker/mongo/default.conf:/usr/local/etc/mongo/mongod.conf" - /opt/data/mongo:/data/db" ports: - "27017:27017" command: "mongod --config /usr/local/etc/mongo/mongod.conf" networks: default: ipv4_address: "172.28.5.4"
рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ docker-compose рд╕рдорд░реНрдерд┐рдд yaml рдПрдВрдХрд░ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрджрд░реНрднред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдПрдВрдХрд░ рдФрд░ рд╕рдВрджрд░реНрдн рд▓рд╛рдЧреВ рдХрд░рдирд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
yaml version: "3.4" services: common: &common extra_hosts: ... networks: ...
yaml version: "3.4" services: mongo: <<: *common image: "mongo" container_name: "mongo" ...
рдкрд░рд┐рдгрд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
yaml version: "3.4" services: mongo: image: "mongo" container_name: "mongo" extra_hosts: // EXTRA HOSTS HERE networks: ...

@ sandro-csimas рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рд╣реИ: https://docs.docker.com/compose/compose-file/#extension -fields
@ рд╢рд┐рди- рдХреНрдпрд╛ рдпрд╣ рдЯрд┐рдХрдЯ рдмрдВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

@rdxmb рдореБрдЭреЗ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ред рдореИрдВ рдЬреЛ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рдЙрд╕рд╕реЗ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдХреНрдпрд╛ рдореИрдВ рдпрд╣ рд╕реЛрдЪрдиреЗ рдореЗрдВ рд╕рд╣реА рд╣реВрдВ рдХрд┐ рдпрд╣ https://github.com/docker/compose/issues рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджрд╛ рд╣реИ?

рдХреБрдЫ рдбрд┐рдмрдЧрд┐рдВрдЧ:

# cat docker-compose.yml 
version: "3.4"
services:
  foo-not-bar:
    << : *common
  foo-bar:
    << : *common
    environment:
      - FOO=BAR 

x-common-definitions-for-all-our-services:
  &common
    image: phusion/baseimage
    environment:
      - FOO=NOTBARBYDEFAULT

рдпрд╣ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ
docker stack deploy -c docker-compose.yml test

рдбреЛрдХрд░-рд▓рд┐рдЦреЗрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп:

# docker-compose up 
ERROR: yaml.composer.ComposerError: found undefined alias 'common'
  in "./docker-compose.yml", line 4, column 10

рд╡рд╛рдИрдПрдордПрд▓-рдлрд╛рдЗрд▓ рдХреЛ рдЗрд╕рдореЗрдВ рдмрджрд▓рдирд╛:

version: "3.4"

x-common-definitions-for-all-our-services:
  &common
    image: phusion/baseimage
    environment:
      - FOO=NOTBARBYDEFAULT

services:
  foo-not-bar:
    << : *common
  foo-bar:
    << : *common
    environment:
      - FOO=BAR

рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рддреЛ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рднреА рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдХрд┐ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИ:

# docker-compose -f compose-services.yml -f compose-default.yml config > docker-compose.yml
ERROR: yaml.composer.ComposerError: found undefined alias 'common'
  in "./compose-services.yml", line 5, column 10
t# docker-compose -f compose-default.yml -f compose-services.yml config > docker-compose.yml
ERROR: yaml.composer.ComposerError: found undefined alias 'common'
  in "./compose-services.yml", line 5, column 10
# cat compose-services.yml 
version: "3.4"

services:
  foo-not-bar:
    << : *common
  foo-bar:
    << : *common
    environment:
      - FOO=BAR 

# cat compose-default.yml 
x-common-definitions-for-all-our-services:
  &common
    image: phusion/baseimage
    environment:
      - FOO=NOTBARBYDEFAULT

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, cat рд╕рд░рд▓ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЗрд╕реЗ рдорд░реНрдЬ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ:

# cat compose-default.yml compose-services.yml > docker-compose.yml && docker-compose up -d
WARNING: The Docker Engine you're using is running in swarm mode.

Compose does not use swarm mode to deploy services to multiple nodes in a swarm. All containers will be scheduled on the current node.

To deploy your application across the swarm, use `docker stack deploy`.

Creating network "test_default" with the default driver
Creating test_foo-bar_1 ... 
Creating test_foo-not-bar_1 ... 
Creating test_foo-bar_1
Creating test_foo-bar_1 ... done

рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде xenial рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ:

# docker --version
Docker version 17.11.0-ce, build 1caf76c
# docker-compose --version
docker-compose version 1.17.0, build ac53b73

@rdxmb , рдзрдиреНрдпрд╡рд╛рдж!
рддреЛ рдореБрдЭреЗ "рдмрд┐рд▓реНрд▓реА" рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рдЕрдВрддрд┐рдо рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╡рд┐рд▓рдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП docker-compose config рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдкрд░реНрдпрд╛рд╡рд░рдг рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг:

рдпрд╣ рд╕реАрдЖрдИ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: docker-compose -f docker-compose.yml -f docker-compose.override.prod.yml config > docker-compose.prod.yml рдФрд░ рдлрд┐рд░ рдореИрдВ docker stack deploy -c .\docker-compose.prod.yml my-stack рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ

рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░реЗрдВ, рд╡рд┐рд╕реНрддрд╛рд░ v3 рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред

v2 рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА!
+1

рдореБрдЭреЗ v3 рдореЗрдВ extends рд╕рдорд░реНрдерди рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред рдпрд╣ рдореЗрд░реА docker-compose.yml рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реБрдЦрд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХрд░реЗрдЧрд╛ред

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

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

рд╕реНрдерд┐рддрд┐ рдХреА рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╡реНрдпрд╛рдЦреНрдпрд╛ (рдФрд░ рд╢рд╛рдпрдж рд╡рд░реНрддрдорд╛рди рд╕реВрддреНрд░ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рднреА) рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

  • YAML рдПрдВрдХрд░/рд╕рдВрджрд░реНрдн рдкреНрд▓рд╕ 3.4 рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдлрд╝реАрд▓реНрдб рд▓рдЧрднрдЧ рд╕рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
  • рдорд▓реНрдЯреА-рдлрд╛рдЗрд▓ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рд╕рд░рд▓ cat рдФрд░ рдЙрдиреНрдирдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рджреЗрдЦреЗрдВ ред рд╕рд░рд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЯрд┐рдкреНрдкрдгреА рдЕрдВрдд рдореЗрдВ рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдХреЗ рдореБрджреНрджреЗ рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИ (рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдмрдирд╛рдИ рд╣реИ?) рдпрджрд┐ рд╡рд╣ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рддреЛ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБ-рдлрд╝рд╛рдЗрд▓ рд╕рдорд░реНрдерди рдХреА рдЗрдЪреНрдЫрд╛ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЛ @rdxmb рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ / compose /issues рдореЗрдВ рдЬрд╛рд░реА рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред
  • extends рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ( рдЧрд┐рдЯрд╣рдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЗрд╡реЗрдВрдЯ рджреЗрдЦреЗрдВ, рдбреЙрдХрд░ рдЯреАрдо рд╕реЗ рдпрд╣рд╛рдВ рдЕрдЪреНрдЫреА рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛, рдзрдиреНрдпрд╡рд╛рдж!) рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрднреА рднреА extends рд▓рд┐рдП рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд▓рд┐рдЦреЗрдВред

рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред

@aCandidMind рд╕рд╣рдорддред

IMHO, рднрд▓реЗ рд╣реА @aCandidMind рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдП рдЧрдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ extends рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕рд░рд▓-рдФрд░-рдХреНрд▓реАрдирд░ рддрдВрддреНрд░ рдореЗрдВ рдЬрдЯрд┐рд▓рддрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореИрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдорд╛рдореВрд▓реА рдЬрдЯрд┐рд▓ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдлрд╝реАрд▓реНрдб рдореЗрдВ рд▓реЗ рдЬрд╛рдирд╛ рдкрдврд╝рдиреЗ рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдХрдИ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рдкреЛрд╕реНрдЯреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдЕрднреА рднреА рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд┐рд╕реНрддрд╛рд░ рдХреНрдпреЛрдВ рдЧрд┐рд░рд╛рдпрд╛ рдЧрдпрд╛ рдФрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдореЗрдВ рдЗрд╕ рдкреНрд░рддрд┐рдЧрдорди рдХреЗ рдХреНрдпрд╛ рдлрд╛рдпрджреЗ рд╣реИрдВред

рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдереЛрдбрд╝реЗ рд╕реЗ рдмреИрд╢ рдореИрдЬрд┐рдХ рдХреЗ рд╕рд╛рде рдореИрдВрдиреЗ рдПрдХ рдЯреЗрд╕реНрдЯ рд░реЗрдкреЛ рд▓рдЧрд╛рдпрд╛ рддрд╛рдХрд┐ рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдЖрдЬрдорд╛ рд╕рдХреЗрдВред

рдмрд╕ рдЕрдкрдиреЗ stack deploy рдХрдорд╛рдВрдб рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХрд░реЗрдВ:

docker stack deploy --compose-file=<(docker-compose -f docker/prod.yml -f docker/dev.yml config) <stackname>

@tylerbuchea - рдЙрд╕ рдмреИрд╢ рдЬрд╛рджреВ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ WARNING: Some services (<service-name(s)>) use the '<key>' key, which will be ignored. Compose does not support '<key>' configuration рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рднреНрд░рдо рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣реЗ, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

@dnmgns рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ! рдпрд╣ рдмрд╛рдд рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЬреИрд╕реЗ @joaocc рдиреЗ рдХрд╣рд╛ рдХрд┐ рджреЗрд╢реА рд╕рдорд░реНрдерди рдХреЛ рд╣рд░рд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЬреЛ рд╕рдорд╛рдзрд╛рди рдКрдкрд░ рдмрддрд╛рдпрд╛ рд╣реИ рд╡рд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдмреИрд╢ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реИред

@tylerbuchea рдПрдХ рдЧрдВрджрд╛ рддрд░реАрдХрд╛ рд╕рд┐рд░реНрдл stderr рдХреЛ/dev/null рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реИ :)
docker stack deploy --compose-file=<(docker-compose -f docker/prod.yml -f docker/dev.yml config 2> /dev/null) <stackname>

рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╢рд░реНрдо рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ

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

рджреЗрдЦреЛ:
https://docs.docker.com/compose/extends/#extending -services
https://docs.docker.com/compose/compose-file/compose-versioning/#upgrading

@tylerbuchea рдорд╣рд╛рди рд╡рди-рд▓рд╛рдЗрдирд░ рдмреИрд╢ рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ,
рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рдЙрдиреНрдирдд рдбреЙрдХрд░ рд╕реНрдЯреИрдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:

WARNING: Some services (web) use the 'deploy' key, which will be ignored. Compose does not support 'deploy' configuration - use `docker stack deploy` to deploy to a swarm.
WARNING: Some services (web) use the 'configs' key, which will be ignored. Compose does not support 'configs' configuration - use `docker stack deploy` to deploy to a swarm.

рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЪреВрдВрдХрд┐ https://github.com/docker/cli/pull/569 рд╡рд┐рд▓рдп рд╣реЛ рдЧрдпрд╛ рд╣реИ, 18.03 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, docker stack deploy рдПрдХрд╛рдзрд┐рдХ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХ рдореЗрдВ рдорд░реНрдЬ рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛ред рдпрд╣ рдХрдВрдкреЛрдЬрд╝рдлрд╛рдЗрд▓ рдкреНрд░рд╛рд░реВрдк v2 рд╕реЗ extends рдХреБрдВрдЬреА рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ

рдореЗрд░рд╛ рдЕрдкрдирд╛ рд╕рдорд╛рдзрд╛рди yq рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛ (рдмреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдПрдХ-рд▓рд╛рдЗрдирд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ):

yq merge --overwrite docker-stack.yml docker-stack.preprod.yml > merged-docker-stack.yml
docker stack deploy -c merged-docker-stack.yml preprod

@ рд▓реБрдХрд╛рд╕-рд╕реА рд╡реЗ рд╕рд┐рд░реНрдл рдЪреЗрддрд╛рд╡рдиреА рджреЗ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдЕрднреА рднреА рдЖрдкрдХреА deploy рдФрд░ config рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреАред рдпрджрд┐ рдЖрдк docker-compose -f docker/prod.yml -f docker/dev.yml config рдЪрд▓рд╛рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдпрд╣ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓реЗрдВ v3.4 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд▓рд┐рдП рд╣реИред рдпрд╣ рдХреНрд░реЙрд╕ рдпрдорд▓ рд╕рдВрджрд░реНрднреЛрдВ (рдЖрдВрд╢рд┐рдХ) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ zsh рдЙрдкрдирд╛рдо/рдкрд░реНрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдЖ:

alias regen=$'perl -MFile::Slurp=read_file -MYAML=Load,Dump -MHash::Merge::Simple=merge -E \'
  local $YAML::QuoteNumericStrings = 1;
  $n=read_file("/data/docker-compose.yml");
  $s=Dump(merge(map{Load($n.read_file($_))}@ARGV));
  local $/ = undef;
  $s =~ s/\\bno\\b/"no"/g;
  say $s;
  \' $(find /data -mindepth 2 -maxdepth 4 -name docker-compose.yml) >! /data/x-docker-compose.yml'
regen
export COMPOSE_FILE=/data/x-docker-compose.yml
  1. рд╕рд╛рдорд╛рдиреНрдп рднрд╛рдЧ рдХреЗ рд╕рд╛рде /data/docker-compose.yml рдкрдврд╝реЗрдВред
  2. рд╕рднреА рдбреЙрдХрдЯрд░ рдХрдВрдкреЛрдЬрд╝ рдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдЦреЛрдЬреЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд▓рдЧрднрдЧ 40 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдВрдЯреЗрдирд░/docker-compose.yml рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВ)
  3. рдкреНрд░рддреНрдпреЗрдХ docker-compose.yml рдХреЛ /data/docker-compose.yml рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдкреНрд░реАрдкреЗрдиреНрдб рдХрд░реЗрдВ
  4. рдорд░реНрдЬ
  5. рдкрд░рд┐рдгрд╛рдо рдХреЛ /data/x-docker-compose.yml рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ

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

рдЖрдк рдПрдХреНрд╕рдЯреЗрдВрдб рдЬреИрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдХреИрд╕реЗ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╣ рдПрдХ рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

docker-compose config рдХреЗ рдорд╛рдирдХ рдЗрдирдкреБрдЯ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рдкрд╛рдЗрдк рдХрд┐рдП рдЧрдП docker stack deploy -c - рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ:

docker-compose -f docker-compose.yml \
               -f docker-compose.extended.yml \
               config \
| docker stack deploy -c - my-stack

рдореИрдВрдиреЗ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ docker stack deploy рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рднреА рджреЗрдЦрд╛ рд╣реИ:

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

рдЗрд╕рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ:

docker stack deploy --compose-file docker-compose.yml -f docker-compose.prod.yml vossibility

https://docs.docker.com/engine/reference/commandline/stack_deploy/#compose -file

рдХреНрдпрд╛ extends рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдФрдЪрд┐рддреНрдп рдХрд╣реАрдВ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдЗрд╕рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ: https://docs.docker.com/compose/extends/#extending -services
рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд░реНрдХ рдХреЛ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмреЗрд╣рддрд░ рд╡рд┐рдЪрд╛рд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдирд┐рд╖реНрдХрд╛рд╕рди рдХрд╛ рдЬрд╡рд╛рдм рдХреИрд╕реЗ рджрд┐рдпрд╛ рдЬрд╛рдПред рдзрдиреНрдпрд╡рд╛рджред

@ рд╢реЙрди-рдмреНрд▓реЗрдХ рдореИрдВ рдХрдИ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реБрдЖред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдЬрд┐рд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рдорд┐рдХреНрд╕-рдЗрди рдХреА рддрд░рд╣ рд╣реИред рдирд┐рд░реНрдорд╛рдг рдпрд╛ рдЪрд▓рд╛рддреЗ рд╕рдордп рдореИрдВ рд╕рд╣реА рдкрд░реНрдпрд╛рд╡рд░рдг yaml рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ docker-compose.override.yml рдкрд░ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реВрдВред

рдПрдХрд╛рдзрд┐рдХ рдбреЙрдХрд░ рдлрд╝рд╛рдЗрд▓реЗрдВ рд▓рд┐рдЦреЗрдВ (рдЙрджрд╛рд╣рд░рдг: base.yml , local.yml , prod.yml ) рд╕реЗрд╡рд╛ рдХреЛ рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ YAML рдПрдВрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрдИ yml рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмреАрдЪ рдлрд╝реИрдХреНрдЯрд░ рд╕реЗрд╡рд╛ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ .
рдзреНрдпрд╛рди рджреЗрдВ, рдпрд╣ рдореБрджреНрджрд╛ 13рд╡рд╛рдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЯрд┐рдкреНрдкрдгреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ : https://github.com/moby/moby/issues?q=is%3Aissue+is%3Aopen+sort%3Acomments-desc рдФрд░ рддреАрд╕рд░рд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкрд╕рдВрдж рдХрд┐рдпрд╛ рдЧрдпрд╛ ред

рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд░реНрдХ рдХреЛ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмреЗрд╣рддрд░ рд╡рд┐рдЪрд╛рд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдирд┐рд╖реНрдХрд╛рд╕рди рдХрд╛ рдЬрд╡рд╛рдм рдХреИрд╕реЗ рджрд┐рдпрд╛ рдЬрд╛рдПред рдзрдиреНрдпрд╡рд╛рджред

extends рдХреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рдФрдЪрд┐рддреНрдп рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкрд░ +1...

рд▓рдЧрднрдЧ рдбреЗрдврд╝ рд╕рд╛рд▓ рдмрд╛рдж рднреА рдХреЛрдИ _рд╡рд┐рд╕реНрддрд╛рд░_ рдирд╣реАрдВ рд╣реБрдЖред рдЪрд▓реЛ, рджреЗрд╡, рдЖрдк рдПрдХ рд╡рд┐рдХрд▓реНрдк рджрд┐рдП рдмрд┐рдирд╛ sth рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рддреЗ рд╣реИрдВред

рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд┐рдпрд╛, рд╡реЗ рд░рдЪрдирд╛ рдирд╛рдордХ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рдореЗрд░реЗ рдЙрддреНрддрд░ рдХреЛ рд╕реВрддреНрд░ рдореЗрдВ рдкрдврд╝реЗрдВред

-рдлрд┐рд▓рд┐рдкреНрдкреЛ

30 рдкрд░ рдЬреБрд▓рд╛ 2018, 09:41 рдкрд░, Xiaohui рд▓рд┐рдпреВ [email protected] рд▓рд┐рдЦрд╛ рд╣реИ:

рдХрд░реАрдм рдбреЗрдврд╝ рд╕рд╛рд▓ рдмрд╛рдж рднреА рдХреЛрдИ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдЪрд▓реЛ, рджреЗрд╡, рдЖрдк рдПрдХ рд╡рд┐рдХрд▓реНрдк рджрд┐рдП рдмрд┐рдирд╛ sth рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рддреЗ рд╣реИрдВред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub https://github.com/moby/moby/issues/31101#issuecomment-408790200 рдкрд░ https://github.com/notifications/unsubscribe-auth/AAS_0AOynjpfVnVo4ZqciMbmjBmkcTQ3ks5uLsbNgaJ.M4MDcml

@dedalozzo , "рдереНрд░реЗрдб рдореЗрдВ" ==?

рдХреГрдкрдпрд╛ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдпрд╣рд╛рдБ рджреЗрдЦреЗрдВ:

https://github.com/moby/moby/issues/31101#issuecomment -329527600 https://github.com/moby/moby/issues/31101#issuecomment-329527600

рдореВрд▓ рд░реВрдк рд╕реЗ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдпрд╛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП .yml рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдХреГрдкрдпрд╛ "рдПрдХрд╛рдзрд┐рдХ рд▓рд┐рдЦреЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛" рдкрдврд╝реЗрдВ

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

https://docs.docker.com/compose/reference/overview/ https://docs.docker.com/compose/reference/overview/

рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрдореЛрдмреЗрд╢ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдкрд░ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

30 рдЬреБрд▓рд╛рдИ 2018 рдХреЛ 15:23 рдмрдЬреЗ, рд╕рд░реНрдмрди рдЯреЗрдУрдбреЛрд░рд╕реНрдХреБ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

@dedalozzo https://github.com/dedalozzo , "рдЗрди рдж рдереНрд░реЗрдб" == ?

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub https://github.com/moby/moby/issues/31101#issuecomment-408880809 рдкрд░ https://github.com/notifications/unsubscribe-auth/AAS_0FZO30NplqHRid_Id8VBOJW7nk5Iks5uLxbigaJp ред

рдЕрдЧрд░ рд╣рдо рдЧрдардмрдВрдзрди рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣рдо рд╡рд╣реА рд╡рд┐рд╕реНрддрд╛рд░рдгреАрдпрддрд╛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдкрд╛ рд╕рдХреЗрдВрдЧреЗ?
yaml рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдлрд╝реАрд▓реНрдб (2.1+/3.4+ рд▓рд┐рдЦреЗрдВ)
рдЙрди x- рдлрд╝реАрд▓реНрдб рдХреЛ рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ

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



рд╡рд░реНрддрдорд╛рди рд░рдЪрдирд╛ v2.1+
# /docker-compose.yml
version: '2.1'

volumes:
  nginx_file_sockets:
    external: false
    driver: local

services:
  reverse_proxy:
    extends:
      file: reverse_proxy/docker-compose.yml
      service: proxy
    restart: 'always'
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - nginx_file_sockets:/sockets/nginx

  reverse_proxy_test:
    extends:
      file: reverse_proxy/docker-compose.yml
      service: proxy
    restart: 'always'
    ports:
      - "8080:80"
      - "8443:443"
    volumes:
      - nginx_file_sockets:/sockets/nginx

  web:
    extends:
      file: webservice/docker-compose.yml
      service: app
    restart: 'always'
    environment:
      ENVIRONMENT: 'production'
      DB_USER: ${WEB1_DB_USER}
      DB_PASSWORD: ${WEB1_DB_PASS}
    volumes:
      - nginx_file_sockets:/sockets/nginx

  web_staging:
    extends:
      file: webservice/docker-compose.yml
      service: app
    restart: 'no'
    environment:
      ENVIRONMENT: 'staging'
      DB_USER: ${WEB1_DB_USER}
      DB_PASSWORD: ${WEB1_DB_PASS}
    volumes:
      - nginx_file_sockets:/sockets/nginx

# /proxy/docker-compose.yml
version: '2.1'
services:
  proxy:
    build: ./
    volumes:
      - /certs:/certs:ro
# /webservice/docker-compose.yml
version: '2.1'
services:
  app:
    build:
      context: ./folder
      args:
        LINUX_VERSION: 20.s
        LINUX_FLAVOR: dash
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - bootstrap.memory_lock=true
    ulimits:
      memlock:
        soft: -1
        hard: -1




рд░рдЪрдирд╛ рдХрд╛ рд╡рд┐рдЪрд╛рд░ v3.X
# /proxy/docker-compose.yml
version: '3.9'
services:
  proxy:
    &proxy
    build: ./
    volumes:
      - /certs:/certs:ro
# /webservice/docker-compose.yml
version: '3.9'
services:
  app:
    &app
    build:
      context: ./folder
      args:
        LINUX_VERSION: 20.s
        LINUX_FLAVOR: dash
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - bootstrap.memory_lock=true
    ulimits:
      memlock:
        soft: -1
        hard: -1
# /docker-compose.yml
version: '3.9'
include:
  - /proxy/docker-compose.yml
  - /webservice/docker-compose.yml

volumes:
  nginx_file_sockets:
    external: false
    driver: local

services:
  reverse_proxy:
    << : *proxy
    restart: 'always'
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - nginx_file_sockets:/sockets/nginx

  reverse_proxy_test:
    restart: 'always'
    << : *proxy
    ports:
      - "8080:80"
      - "8443:443"
    volumes:
      - nginx_file_sockets:/sockets/nginx

  web:
    << : *app
    restart: 'always'
    environment:
      ENVIRONMENT: 'production'
      DB_USER: ${WEB1_DB_USER}
      DB_PASSWORD: ${WEB1_DB_PASS}
    volumes:
      - nginx_file_sockets:/sockets/nginx

  web_staging:
    restart: 'no'
    extends:
      file: web1/docker-compose.yml
      service: app
    environment:
      ENVIRONMENT: 'staging'
      DB_USER: ${WEB1_DB_USER}
      DB_PASSWORD: ${WEB1_DB_PASS}
    volumes:
      - nginx_file_sockets:/sockets/nginx




рдЕрдВрддрд░
@@ /proxy/docker-compose.yml @@
-version: '2.1'
+version: '3.9'
 services:
   proxy:
+    &proxy
     build: ./
     volumes:
       - /certs:/certs:ro
 ```

 ```diff
 @@ /webservice/docker-compose.yml @@
-version: '2.1'
+version: '3.9'
 services:
   app:
+    &app
     build:
       context: ./folder
       args:
         LINUX_VERSION: 20.s
         LINUX_FLAVOR: dash
     environment:
       - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
       - bootstrap.memory_lock=true
     ulimits:
       memlock:
         soft: -1
         hard: -1
 ```

 ```diff
 @@ /docker-compose.yml @@
-version: '2.1'
+version: '3.9'
+include:
+  - /proxy/docker-compose.yml
+  - /webservice/docker-compose.yml

 volumes:
   nginx_file_sockets:
     external: false
     driver: local

 services:
   reverse_proxy:
-    extends:
-      file: reverse_proxy/docker-compose.yml
-      service: proxy
+    << : *proxy
     restart: 'always'
     ports:
       - "80:80"
       - "443:443"
     volumes:
       - nginx_file_sockets:/sockets/nginx

   reverse_proxy_test:
-    extends:
-      file: reverse_proxy/docker-compose.yml
-      service: proxy
+    << : *proxy
     restart: 'no'
     ports:
       - "8080:80"
       - "8443:443"
     volumes:
       - nginx_file_sockets:/sockets/nginx

   web:
-    extends:
-      file: webservice/docker-compose.yml
-      service: app
+    << : *app
     restart: 'always'
     environment:
       ENVIRONMENT: 'production'
       DB_USER: ${WEB1_DB_USER}
       DB_PASSWORD: ${WEB1_DB_PASS}
     volumes:
       - nginx_file_sockets:/sockets/nginx

   web_staging:
-    extends:
-      file: webservice/docker-compose.yml
-      service: app
+    << : *app
     restart: 'no'
     environment:
       ENVIRONMENT: 'staging'
       DB_USER: ${WEB1_DB_USER}
       DB_PASSWORD: ${WEB1_DB_PASS}
     volumes:
       - nginx_file_sockets:/sockets/nginx
 ```
<hr>
Resulting in the final version, which should be already yaml parsable:

```yml
# /docker-compose.yml
version: '3.9'
#include:
#  - /proxy/docker-compose.yml
#  - /webservice/docker-compose.yml
x-include:
  /proxy/docker-compose.yml:
    version: '3.9'
    services:
      proxy:
        &proxy
        build: ./
        volumes:
          - /certs:/certs:ro
  /webservice/docker-compose.yml:
    version: '3.9'
    services:
      app:
        &app
        build:
          context: ./folder
          args:
            LINUX_VERSION: 20.s
            LINUX_FLAVOR: dash
        environment:
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
          - bootstrap.memory_lock=true
        ulimits:
          memlock:
            soft: -1
            hard: -1

volumes:
  nginx_file_sockets:
    external: false
    driver: local

services:
  reverse_proxy:
    << : *proxy
    restart: 'always'
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - nginx_file_sockets:/sockets/nginx

  reverse_proxy_test:
    << : *proxy
    restart: 'no'
    ports:
      - "8080:80"
      - "8443:443"
    volumes:
      - nginx_file_sockets:/sockets/nginx

  web:
    << : *app
    restart: 'always'
    environment:
      ENVIRONMENT: 'production'
      DB_USER: ${WEB1_DB_USER}
      DB_PASSWORD: ${WEB1_DB_PASS}
    volumes:
      - nginx_file_sockets:/sockets/nginx

  web_staging:
    << : *app
    restart: 'no'
    environment:
      ENVIRONMENT: 'staging'
      DB_USER: ${WEB1_DB_USER}
      DB_PASSWORD: ${WEB1_DB_PASS}
    volumes:
      - nginx_file_sockets:/sockets/nginx

AFAIK рдпрд╣ рдПрдХ YAML рдлреАрдЪрд░ рд╣реИ, рдЬрд┐рд╕реЗ рдПрдХ рд╣реА рдлрд╛рдЗрд▓ рдореЗрдВ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╣рд┐рд╕реНрд╕реЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд▓реИрдЧреЗрдЬ рд╕реНрдкреЗрдХ рдореЗрдВ рд╣реА рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрд╕рдВрднрд╡ рд╣реИред

рдЖрдкрдХреЛ рдЙрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╡рд╛рдИрдПрдПрдордПрд▓ рд╕реНрдкреЗрдХ рдореЗрдВ рд╣реА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рдЪрд░реНрдЪрд╛ рдЬрд▓рддреА рд╣реИ:

  • рдХреИрд╕реЗ docker-compose -f file.yml docker-compose -f file.yml -f file_extension.yml рд╕реЗ рдЗрддрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ?
  • рдпрд╛: рдХрдорд╛рдВрдб рд╕реНрддрд░ рдкрд░ рд╡рд╛рдпрд░рд┐рдВрдЧ _vs_ рдлрд╝рд╛рдЗрд▓ рд╕реНрддрд░ рдкрд░ рд╡рд╛рдпрд░рд┐рдВрдЧред

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

рдпрджрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрд░реНрдХ рд╣реИ, рддреЛ docker-compose up service рдореЗрдВ docker-compose -f service.yml up рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рд╢рдмреНрджрд╛рд░реНрде рд╣реИ: рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ (рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдЙрд░реНрдл) рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ docker-compose.override.yml ред

рджрд┐рдП рдЧрдП рд╢рдмреНрджрд╛рд░реНрде рдмрд╣реБрдд рд╕рд╛рдл рдФрд░ рд╕реБрд╡рд┐рдЪрд╛рд░рд┐рдд рд╣реИрдВред рдХрдорд╛рдВрдб рд▓рд╛рдЗрди use_ рдХреЗ рд▓рд┐рдП service.yml _рдХреЛ рдЕрдкрдирд╛рдиреЗ рдХрд╛ рдорддрд▓рдм рд╢рд╛рдпрдж UX рдХреЛ рдХрдо рдХрд░рдирд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рддрд░реНрдХ рд╣реИ: рдЬрдмрдХрд┐ рдпрд╣ рдкрд╣рд▓реА рдирдЬрд░ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реИ, docker-compose.yml рд╣реИ, service.yml рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рднреАред

рдЕрд╕реНрд╡реАрдХрд░рдг: рдПрдХ рдЙрддреНрддреЗрдЬрдХ рд░рд╛рдпред :рд╡рд┐рдВрдХ: рдореИрдВрдиреЗ рд╣рд░ рд╕рдВрднрд╡ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛...

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЪреАрдЬ рдЬреЛ рд╣рдо рдХрд░ рд╕рдХрддреЗ рдереЗ рд╡рд╣ рд╣реИ v2 рдмрдирд╛рдо v3 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди рдХрд╣рд╛рдиреА рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ред рдХрдИ рд▓реЛрдЧ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ v3 рдиреЗ v2 рдХреЛ

v2: рдХреЗрд╡рд▓ docker-compose cli рдХреЗ рд▓рд┐рдПред рд╡рд┐рдХрд╛рд╕ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдПрдХ рдорд╢реАрди рдФрд░ рдЗрдВрдЬрди рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИред рд╕реАрдЖрдИ рдмрд┐рд▓реНрдб/рдЯреЗрд╕реНрдЯ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ рд▓рд┐рдП рднреА рдЕрдЪреНрдЫрд╛ рд╣реИред рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рд╢рд╛рдЦрд╛ рдХреЛ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рджрд┐рд╕рдВрдмрд░ 2017 рддрдХ v17.12 . рдореЗрдВ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдорд┐рд▓реАрдВ

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

рдпрджрд┐ рдЖрдк рдЭреБрдВрдб рдпрд╛ рдбреЙрдХрд░ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ v3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ ред v2.4 рдХреЗ рд╕рд╛рде рдмрдиреЗ рд░рд╣реЗрдВ, рдФрд░ рдЖрдкрдХреЛ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдХреЗ рд╕рд╛рде рдПрдХреНрд╕рдЯреЗрдВрдбреНрд╕, рдбрд┐рдкреЗрдВрдбреНрд╕_рдСрди, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдлреАрд▓реНрдбреНрд╕ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдбрд┐рдкреЗрдВрдбреНрд╕_рдСрди рд╕рд╣рд┐рдд рд╕рднреА рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдХреНрд▓реА рдлреАрдЪрд░реНрд╕ рдорд┐рд▓рддреЗ рд╣реИрдВ (рд╡реЗрдЯ-рдлреЙрд░-рдЗрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП)ред

v3 рдХреЛ рдорд▓реНрдЯреА-рдиреЛрдб рдХреНрд▓рд╕реНрдЯрд░ рд╡рд░реНрд▓реНрдб рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдЧрд▓ рдЗрдВрдЬрди рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдХреНрд▓реА рд╡рд░реНрд▓реНрдб рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЖрдЬрд╝рдорд╛рдиреЗ рдФрд░ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕рднреА v2 рд╕реБрд╡рд┐рдзрд╛рдПрдВ (рдЬреИрд╕реЗ рдирд┐рд░реНрднрд░_рдСрди) рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддреА рд╣реИрдВред рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ (рдЬреИрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░) рдиреЗ рдЗрд╕реЗ v3 рдореЗрдВ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рд╣реИ, рд╕рдВрднрд╡рддрдГ рдХреНрдпреЛрдВрдХрд┐ v3 рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рдЖрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕рднреА рдХреЛрдб docker-compose Python рдореЗрдВ рдереЗ, рдФрд░ v3.0 рдХреЗ рд▓рд┐рдП рдЭреБрдВрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рд╛ рдХрд┐ docker cli Go рдореЗрдВ, рдФрд░ рдЕрдм рд╡реЗ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЗрдВрдЬрди рдбреЗрдореЙрди рдореЗрдВ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЕрдВрддрддрдГ рдПрдХ рдЭреБрдВрдб рд╕реНрдЯреИрдХ рдПрдкреАрдЖрдИ рдмрдирд╛ рд╕рдХреЗрдВ, рдЬреЛ рдЕрднреА рддрдХ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

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

https://docs.docker.com/compose/extends/#extends/#extending -services рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдЬрд╝реЛрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡рд┐рд╕реНрддреГрдд рдХреАрд╡рд░реНрдб v3 рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ _note_ рд╕реЗ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдореИрдВрдиреЗ рдбреЙрдХреНрд╕ рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд┐рдпрд╛ рдФрд░ рд╕реНрдХрд┐рдо рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдЕрдм рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛, рдлрд┐рд░ рдпрд╣рд╛рдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрдИ рдмрдВрдж рдореБрджреНрджреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛, рдлрд┐рд░ рдореВрд▓ рдбреЙрдХреНрд╕ рдкрд░ рд╡рд╛рдкрд╕ рдЧрдпрд╛ рдФрд░ рд╢рдмреНрджреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ред

рд╡рд┐рд╕реНрддреГрдд рдХреАрд╡рд░реНрдб рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд╕реНрдХрд░рдг 2.1 рддрдХ рдкрд╣рд▓реЗ рдХреЗ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИ (рджреЗрдЦреЗрдВ v1 рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдФрд░ v2 рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд), рд▓реЗрдХрд┐рди рдХрдВрдкреЛрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг 3.x рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред

рдХреЗ рд░реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рд╡рд┐рд╕реНрддреГрдд рдХреАрд╡рд░реНрдб рдХреЛ рдХрдВрдкреЛрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг 3.x рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд╕реНрдХрд░рдг 2.1 рддрдХ рдкрд╣рд▓реЗ рдХреЗ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИ (рджреЗрдЦреЗрдВ v1 рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдФрд░ v2 рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд)ред

рдпрд╣ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрдВрддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдбреЙрдХреНрд╕ рдХреЛ рд╕реНрдХрд┐рдо рдХрд░рддреЗ рд╕рдордп рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред

@krisrp PR started ^^^

рдзрдиреНрдпрд╡рд╛рдж @ рдмреНрд░реЗрдЯрдлрд┐рд╢рд░

рдХреНрдпрд╛ v2 рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ "рд╕рдВрд╕реНрдХрд░рдг: docker-cli" рдФрд░ v3 рд╕реЗ "рд╕рдВрд╕реНрдХрд░рдг: рдЭреБрдВрдб/рдХреНрдпреВрдм" рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рд╣реИ?
рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдХреИрд╕реЗ v3 рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рд╕рдВрд╕реНрдХрд░рдг рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ v2 рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рджреЛрдиреЛрдВ рдмрдирд╛рдП рд╣реБрдП рд╣реИрдВ рдФрд░ рдЕрд▓рдЧ рд╣реЛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЬрдм рддрдХ рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рджреЛрдиреЛрдВ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдЖрд╕рдкрд╛рд╕ рд░рд╣реЗрдВрдЧреЗред

@krisrp рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдиреЗ рдХрд╛ рдХрд╛рд░рдг рд╕рдВрдЧрддрддрд╛ рдореЗрдВ рд╡рд┐рдЪрд▓рди рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдирд╛ рд╣реИред

@ cpuguy83 рдореИрдВ рдЕрдиреНрдпрдерд╛ рдирд╣реАрдВ
IIRC Gnome 2 рдФрд░ 3 рдореЗрдВ рднреА рдпрд╣ рднреНрд░рдо рд╡рд░реНрд╖реЛрдВ рдкрд╣рд▓реЗ рдерд╛ рдЬрдм рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд╕реНрд╡рддрдВрддреНрд░ рдХрд╛рдВрдЯреЗ рдмрдирд╛рдП рдЧрдП рдереЗред

рдореИрдВ рд╕рдВрд╕реНрдХрд░рдг (рдмреБрд░рд╛ рд╡рд╛рдХреНрдп) рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реВрддреНрд░ рдХреЛ рдкрдЯрд░реА рд╕реЗ рдирд╣реАрдВ рдЙрддрд╛рд░рдирд╛ рдЪрд╛рд╣рддрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рд╡рд╣реАрдВ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред v2 рдмрдирд╛рдо v3 рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд╣рдлреНрддреЗ @ рдмреНрд░реЗрдЯрдлрд┐рд╢рд░ рдХреА рдкреЛрд╕реНрдЯ рдиреЗ рдореБрдЭреЗ рдФрд░ рд╢рд╛рдпрдж рджреВрд╕рд░реЛрдВ рдХреА рдорджрдж рдХреА рд╣реЛрдЧреАред

@ рд╢рд┐рди- @ cpuguy83 рдПрдХ рд╕рд╛рд▓ рдмрд╛рдж рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╕рдВрд╕реНрдХрд░рдг 3 рдореЗрдВ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рди рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХреНрдпрд╛ _is_ рддрд░реНрдХ рд╣реИ?

рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рдорд┐рд▓рд╛, "рд╣рдо рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рдереЗ" рдХреЗ рдЕрд▓рд╛рд╡рд╛ (рд▓реЗрдХрд┐рди рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдкреЗрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛)
рдХреНрдпрд╛ рдХреЛрдИ рддрдХрдиреАрдХреА рд╕реАрдорд╛ рд╣реИ? рдпрд╛ рд╕рд┐рд░реНрдл рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреА рдХрдореА рд╣реИ?

рдЖрдЦрд┐рд░рдХрд╛рд░, рдореЗрд░реА рд▓рд┐рдЦреЗрдВ 2.1 рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрднреА рднреА рдареАрдХ рдЪрд▓ рд░рд╣реА рд╣реИрдВред

рдЗрддрдирд╛ рд╣реА рдирд╣реАрдВ, рдЪреЗрдВрдЬрд▓реЙрдЧ рдХрд╣рддрд╛ рд╣реИ "рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП 'рдЕрдкрдЧреНрд░реЗрдб рдХреИрд╕реЗ рдХрд░реЗрдВ' рджреЗрдЦреЗрдВ"ред рдореИрдВ "рдХреИрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ" рдХреЗ рд▓рд┐рдП рджреЗрдЦрддрд╛ рд╣реВрдВ, рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЕрдкрдЧреНрд░реЗрдб рдХреИрд╕реЗ рдХрд░реЗрдВ, рдФрд░ рдЬреЛ рдХрд╣рддрд╛ рд╣реИ рд╡рд╣ рд╣реИ "рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП 'рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗрд╡рд╛рдПрдВ' рджреЗрдЦреЗрдВ"ред рдореИрдВ "рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕реЗрд╡рд╛рдУрдВ" рдкрд░ рдЬрд╛рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдВрддрддрдГ рдЕрдкрдиреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рджреЗрдЦреВрдВрдЧрд╛, рдХреЗрд╡рд▓ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ "рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЪреЗрдВрдЬрд▓реЙрдЧ рджреЗрдЦреЗрдВ"ред

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдпрд╣ рдПрдХ рдХреНрд░реВрд░ рдордЬрд╛рдХ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рд▓реЗрдЦрди рд▓реЗрдЦрдХ рдЦреЗрд▓ рд░рд╣рд╛ рд╣реИред

рдЕрдВрддрддрдГ, "рд╕реНрдЯреИрдХ" рдкреНрд░рд╛рд░реВрдк рдпрд╣рд╛рдВ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдбреЙрдХрд░ рд╕реАрдПрд▓рдЖрдИ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред

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

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

рдКрдкрд░ рдХреА рддрд░рд╣ред docker-compose рдлрд┐рд░ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕рдХреЗ рд╣рд▓ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИред

+1 рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЖрдзрд╛рд░рд┐рдд рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░рдг рдЭреБрдВрдб рдХреЗ рд▓рд┐рдП рдХрдВрдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд┐рд╕реНрддрд╛рд░ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП +1

рдЗрд╕ рдкрд░ рдХреЛрдИ рднреА рд╕рдорд╛рдЪрд╛рд░?

рдЕрднреА рднреА рдЗрд╕рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рд╣реИ

рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИред рдЕрдм рднреА рдЗрдВрддрдЬрд╝рд╛рд░ред

рдХрд┐рд╕реА рднреА рдЕрджреНрдпрддрди?

рдХреНрдпрд╛ рдХрднреА рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЗрд╕реЗ рдХреНрдпреЛрдВ рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛?

рд╕реЛрдо, 5 рдЕрдЧрд╕реНрдд 2019, 11:10 Jaykishan рдкрд░, [email protected] рд▓рд┐рдЦрд╛ рд╣реИ:

рдХрд┐рд╕реА рднреА рдЕрджреНрдпрддрди?

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/moby/moby/issues/31101?email_source=notifications&email_token=ABOE6GA4CXY6ESMZMTDSFGDQC74CZA5CNFSM4DANZGS2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVWFL1817KORP
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/ABOE6GCEFFJ3SOLDWRWX2IDQC74CZANCNFSM4DANZGSQ
.

рдХрд┐рд╕реА рднреА рдЕрджреНрдпрддрди?

рддреЛ .. рдпрд╣ рд▓рдЧрднрдЧ 3 рд╕рд╛рд▓ рд╣реИ ...
рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЙрддрд░реЗрдЧрд╛ :D

рдЕрдЧрд░ рдпрд╣ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ рддреЛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдореВрд░реНрдд рд╕реЗрд╡рд╛рдУрдВ рдХреА рдЕрдиреБрдорддрд┐ рдХреНрдпреЛрдВ рдирд╣реАрдВ? рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рд░реВрдк рдлреНрд▓реИрдЯ рд╣реЛрдЧрд╛ рдФрд░ рд╕рднреА рд╕реЗрд╡рд╛ рдШреЛрд╖рдгрд╛рдПрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реЛрдВрдЧреАред рдЖрдк рдиреЛрдб рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП yaml рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдЕрдореВрд░реНрдд рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ( & рдорд╛рдзреНрдпрдо рд╕реЗ) рдЙрди рдЙрдкрдирд╛рдореЛрдВ рдХреЛ <<: рдСрдкрд░реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

3 рд╕рд╛рд▓ рдХреНрдпреЛрдВ !! рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЙрди рдЪреАрдЬреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рдирдХреА рдХрд┐рд╕реА рдХреЛ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ

рдЗрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдЕрджреНрдпрддрди?

рдпрд╣ рджрдпрдиреАрдп рд╣реИред рдЯреЗрд░рд╛рдлреЙрд░реНрдо рд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рддреЛ рдпрд╣ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рд░рдЪрдирд╛ рдЗрд╕ рдЕрдЪреНрдЫреЗ рдбрд┐рдЬрд╛рдЗрди рдЕрднреНрдпрд╛рд╕ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ?!
рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдореЙрдбреНрдпреВрд▓ рд╕рдВрд░рдЪрдирд╛
рдЯреЗрд░рд╛рдлреЙрд░реНрдо рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕

"рджрдпрдиреАрдп", рдЕрдЪреНрдЫрд╛ред

@ рдХреНрд░рд┐рд╕реНрдЯрд┐рдпрди-рдорд╛рд▓рд┐рдиреЗрд╕реНрдХреБ рдЖрдЧреЗ рдмрдврд╝реЛ, рдХреГрдкрдпрд╛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВред
рдпрд╣ рдлреНрд░реА рдФрд░ рдУрдкрди рд╕реЛрд░реНрд╕ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╣реИред

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

@luckydonald рдПрдХ рдЖрд╕рд╛рди/рдирд┐рд╖реНрдХреНрд░рд┐рдп-рдЖрдХреНрд░рд╛рдордХ рдЙрддреНрддрд░ рдХреЗ рд╕рд╛рде @ рдХреНрд░рд┐рд╕реНрдЯрд┐рдпрди-рдорд╛рд▓рд┐рдиреЗрд╕реНрдХреБ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рд╣рдореЗрд╢рд╛ рдорджрдж рдирд╣реАрдВ рдХрд░рдиреЗ рдЬреИрд╕рд╛ рд╣реИред @ рдХреНрд░рд┐рд╕реНрдЯрд┐рдпрди-рдорд╛рд▓рд┐рдиреЗрд╕реНрдХреБ рдпрд╣ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд╣рд╛рдВ (рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ) рдПрдХ рдХрд╛рд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдЯреАрдо рдореЗрдВ рдХреЛрдИ рд╣реИ рддрд╛рдХрд┐ рд╡рд╣ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓ рд╕рдХреЗ рдорд╛рдорд▓рд╛?

рдереНрд░реЗрдб рд╕реНрдХрд┐рдореНрдб рдФрд░ рд╕рдорд░реНрдерд┐рдд YAML рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

@nomasprime рдЙрд╕ рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП v2 рдФрд░ v3 рдХреЗ рдмреАрдЪ рдирд┐рд░реНрдгрдп рд▓реЗ рд░рд╣рд╛ рдерд╛, рдФрд░ рдЗрд╕рдиреЗ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдмрдбрд╝реА рджреБрд╡рд┐рдзрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ред рд╣реИрд░рд╛рдиреА рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдЗрди рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдбреЙрдХреНрд╕ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗрд╡рд╛рдУрдВ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдмрдврд╝рд┐рдпрд╛, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреГрд╖реНрда рдХреЗ рджрд╛рдПрдБ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдкрд░ Request docs changes рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрд╡рд╕рд░ рд▓рдЧрддрд╛ рд╣реИред

@nomasprime рд╣рд╛рдВ, рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдкрд╣рд▓реЗ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдерд╛ред

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

рдКрдкрд░ рджреЗрдЦреЗрдВ, рдЬреИрд╕реЗ https://github.com/moby/moby/issues/31101#issuecomment -413323610

рдпрд╣ рдмрд╣реБрдд _readable_ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХрдо рд╕реЗ рдХрдо _possible_ рд╣реЛрдЧрд╛ред

@nomasprime рдЙрд╕ рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП v2 рдФрд░ v3 рдХреЗ рдмреАрдЪ рдирд┐рд░реНрдгрдп рд▓реЗ рд░рд╣рд╛ рдерд╛, рдФрд░ рдЗрд╕рдиреЗ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдмрдбрд╝реА рджреБрд╡рд┐рдзрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ред

@arseniybanayev рдорд╛рдзреНрдпрдо рдкрд░ рд▓реЗрдЦ рдХреЗрд╡рд▓ v3 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди v2 рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг docker-compose рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рди рдХрд┐ swarm (рдФрд░ v3 рдХрдВрдЯреЗрдирд░ рдореЗрдореЛрд░реА рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдЬреИрд╕реА v2 рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)

рдФрд░ v3 рдХрдВрдЯреЗрдирд░ рдореЗрдореЛрд░реА рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдЬреИрд╕реА v2 рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

v3 рд╕реНрдореГрддрд┐ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрд╖реЗрддреНрд░ deploy -> resources -> limits рдЕрдВрддрд░реНрдЧрдд рд╣реИ https://docs.docker.com/compose/compose-file/#resources

@thaJeztah рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, docker-compose (рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЙрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЭреБрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣рд╛ рдерд╛)ред IIRC рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗрд╡рд▓ рдЭреБрдВрдб рдХреЗ рд▓рд┐рдП рд╣реИ, рд╣реИ рдирд╛?

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

рдореИрдВрдиреЗ рдХрднреА рднреА ECS, k8s, рдпрд╛ GAE рдХреЗ рд╕рд╛рде рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЭреБрдВрдб рдФрд░ рд░рди рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рдЭреБрдВрдб/рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рдХрдВрдкреЛрдЬрд╝ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд┐рдХрд▓реНрдк рдЕрдиреБрд╡рд╛рдж рдпреЛрдЧреНрдп/рдЙрдкрдпреЛрдЧ рдпреЛрдЧреНрдп рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ memory рд╕реАрдорд╛ docker-compose рд▓рд┐рдП рдХреНрдпреЛрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрдЧреА

рдЕрднреА рднреА рд╡рд┐рд╕реНрддрд╛рд░ рд╕реБрд╡рд┐рдзрд╛ рдЧрд╛рдпрдм рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдореБрдЦреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВрдиреЗ COMPOSE_FILE env рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдИ рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ред рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬреНрдпрд╛рджрд╛рддрд░ рдПрдХ рд╣реА рдЖрдзрд╛рд░ docker-compose.yml рдХрд╛ рдЙрдкрдпреЛрдЧ рджреЗрд╡ рдХреЗ рд▓рд┐рдП рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкрд╛рд╕рд╡рд░реНрдб рдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВред

рдЙрджрд╛рд╣рд░рдг:

  • рджреЗрд╡ рдкрд░: export COMPOSE_FILE= docker-compose.yml` # рдбрд┐рдлрд╝реЙрд▓реНрдЯ
  • рдЙрддреНрдкрд╛рдж рдкрд░: export COMPOSE_FILE= docker-compose. yml:docker-compose.prod.yml `# рджреЛрдиреЛрдВ yaml рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ

docker-compose.prod.yml рдореИрдВ рд╕рд┐рд░реНрдл prod рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде env vars рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░ рджреЗрддрд╛ рд╣реВрдВред

рдпрд╣ рд╕реЗрдЯрдЕрдк рд╕рд░рд▓ рд╣реИ рдФрд░ рдореБрдЭреЗ docker-compose рдХрдорд╛рдВрдб рдореЗрдВ рд╣рдореЗрд╢рд╛ рдПрдХрд╛рдзрд┐рдХ "-f" рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдмрд╕ рджреЗрд╡ рдХрдВрдкреНрдпреВрдЯрд░ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ COMPOSE_FILE env var рдЕрд▓рдЧ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ git docker-compose.prod.yml рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВред

рдЕрдм рднреА рдЗрдВрддрдЬрд╝рд╛рд░ :)

рдореИрдВ рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

docker-compose \
  -f ./docker/base.yml \
  -f ./docker/extended.yml \
  up

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

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

extended_docker_compose="
  version: '3.5'
  services:
    my-service:
      restart: always
"

echo "$extended_docker_compose" | docker-compose \
  -f ./docker/base.yml \
  -f /dev/stdin \
  up

@ рдбреЗрд╡-рдбреАрдПрдо рд╡реЗ рд╕рд╛рджреЗ рдкреБрд░рд╛рдиреЗ рдУрд╡рд░рд░рд╛рдЗрдб рд╣реИрдВ!

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╡реИрдз рдЙрдкрдпреЛрдЧрдХреЗрд╕ рд╣реИ

https://github.com/NerdsvilleCEO/devtools/blob/master/doctl/docker-compose.yml#L10

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ docker-compose рд░реИрдкрд░ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдПрдХ env рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВ https://github.com/nowakowskir/docker-compose-wrapper

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдПрдХ рдЕрдиреНрдп рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧрдХреЗрд╕ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рд▓реИрдВрдк/рдПрд▓рдИрдПрдордкреА рд╕реНрдЯреИрдХ рд╣реИ рдФрд░ рд╡реЗ рдЙрди рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдЬреИрд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрд╡рд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ

рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╣реБрдП 2017 рд╕реЗ рдЕрднреА рднреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред

@nomasprime рд╣рд╛рдВ, рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдкрд╣рд▓реЗ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдерд╛ред

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

рдКрдкрд░ рджреЗрдЦреЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП #31101 (рдЯрд┐рдкреНрдкрдгреА)

рдпрд╣ рдмрд╣реБрдд _readable_ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХрдо рд╕реЗ рдХрдо _possible_ рд╣реЛрдЧрд╛ред

@luckydonald рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЕрдЬреАрдм рдХреЛрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд╛рдИрдПрдПрдордПрд▓ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ , рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрдИ рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧреАред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ v3 рдкрд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд▓рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрдиреБрд╕реНрдорд╛рд░рдХ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ :)

рдЗрд╕реЗ v3 btw рдкрд░ рдкреЛрд░реНрдЯ рди рдХрд░рдиреЗ рдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИ?

рдореИрдВ рднреВрд▓ рдЬрд╛рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╣рдЯрд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛?

рдмреБрдз, 6 рдордИ 2020, 23:14 рдЬреВрд▓рд┐рдпрди рдорд╛рд░реЗрдЪрд▓, рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрдиреБрд╕реНрдорд╛рд░рдХ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ :)

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/moby/moby/issues/31101#issuecomment-624919070 , рдпрд╛
рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд
https://github.com/notifications/unsubscribe-auth/ABOE6GGDIVGATP734YJA4UTRQHOLJANCNFSM4DANZGSQ
.

рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ yaml рдПрдВрдХрд░ рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВ, рд╡рд╣ extend рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдпрд╣ рд╢рдХреНрддрд┐, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рддрддреНрд╡реЛрдВ рдХреЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╡рд┐рд▓рдп рд╕реЗ рдЖрдИ рд╣реИред рдПрдВрдХрд░ рдЖрдкрдХреЛ рд╢рд╛рдпрдж 75% рд░рд╛рд╕реНрддреЗ рдореЗрдВ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ - рд╡реЗ рдпрдорд▓ рдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рд╡рд┐рд▓рдп рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ; рдЖрдкрдХрд╛ рд╕рднреА рд╡рд┐рд▓рдп рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░ рд╣реЛрддрд╛ рд╣реИред рдПрдВрдХрд░ рд╕реЗрд╡рд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдФрд░ рдлрд┐рд░ environment рдмреНрд▓реЙрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдВрдХрд░ рд╕реЗрд╡рд╛ рдХреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдмреНрд▓реЙрдХ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред extend рдХреАрд╡рд░реНрдб рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреЗ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреЗрдбрд╝ рдХреЗ рдиреАрдЪреЗ рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрджрдХреЛрд╢ рдХреЛ рдПрдВрдХрд░ рдФрд░ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдПрдХ рдЙрджрд╛рд╣рд░рдг:

# anchors for the service, environment, deploy, and deploy.placement blocks
# you'll need an anchor for every dict that you want to merge into
x-common-app: &common-app
  image: app:1.0
  environment: &common-app-environment
    common_option: a
    overwrite_option: b
  deploy: &common-app-deploy
    max-replicas-per-host: 3
    placement: &common-app-deploy-placement
      constraints:
        - 'node.labels.app_host==true'

services:
  myapp: << *common-app
    environment: << *common-app-environment
      foo: bar
      baz: xyzzy
      overwrite_option: quz
    deploy: << *common-app-deploy
      replicas: 15
      placement: << *common-app-deploy-placement
        preferences:
          - spread: node.labels.region

# The above yields the following:
services:
  myapp:
    image: app:1.0
    environment:
      common_option: a
      overwrite_option: quz
      foo: bar
      baz: xyzzy
    deploy:
      replicas: 15
      max-replicas-per-host: 3
      placement:
        constraints:
          - 'node.labels.app_host==true'
        preferences:
          - spread: node.labels.region

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдпрд╣ рдЗрддрдирд╛ рдХрд╖реНрдЯрдкреНрд░рдж рдирд╣реАрдВ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмреНрд▓реЙрдХ рд╕реЗ рдХрдИ (10+) рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХрд╖реНрдЯрдкреНрд░рдж рдФрд░ рдХрдо рдкрдардиреАрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

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

рдореЗрд░реЗ рд╕рдВрдЧрдарди рдореЗрдВ рд╣рдордиреЗ yaml рдПрдВрдХрд░реЛрдВ рдХреЛ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдореИрд▓рд╛ рдкрд╛рдпрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдмрд╛рд╣рд░реА рдкрд╛рдпрдерди рд▓рд┐рдкрд┐ рдореЗрдВ extend рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдЪреАрдЬрд╝ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдпрд╣ рдПрдХ рд▓рдВрдЧрдбрд╝рд╛ рддрд░реАрдХрд╛ рд╣реИред рдЗрд╕реА рддрд░рд╣ рд╣рдореЗрдВ v3/рдЭреБрдВрдб рд╕реНрдЯреИрдХ рдХреЗ рд▓рд┐рдП depends_on рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдмрд╛рд╣рд░реА рдЯреВрд▓рд┐рдВрдЧ рдмрдирд╛рдирд╛ рдкрдбрд╝рд╛ рд╣реИред

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

  • рдЖрдк рдЕрдиреНрдп YAML рдлрд╝рд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ
  • рдЖрдк рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ
  • рдЖрдк рдЕрд╕рд▓реА рд╕рд╛рдорд╛рди рдорд╛рдиреЗ рдЬрд╛рдиреЗ рд╕реЗ "рдЫрд┐рдкрд╛" рднреА рд╕рдХрддреЗ рд╣реИрдВред рд░рдЪрдирд╛ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдпрд╣ x- , рдЧрд┐рдЯрд▓реИрдм рд╕реАрдЖрдИ рдореЗрдВ рдпрд╣ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рд╛рд░рдВрднрд┐рдХ . ред

рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд╕рдЯреАрдХ рд╕реЗрдЯ рд╣реИ рдЬреЛ рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд╣рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдбреЙрдХ рдбреЙрдХреНрд╕ рд╕реЗ рдЖрдпрд╛ рдерд╛, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рдЕрдкрдиреЗ docker-compose рд╕реЗрдЯрдЕрдк рдХреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдФрд░ рдПрдХ 'рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб' рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВрдиреЗ рдКрдкрд░ рджреА рдЧрдИ рд╕рд▓рд╛рд╣ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдФрд░ рдореМрдЬреВрджрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореИрдВ рдЬреАрддрд╛; рдЙрдиреНрд╣реЗрдВ рд╣рдорд╛рд░реЗ рдШрдВрдЯреЗ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдЬреЛ рдХреБрдЫ рднреА рдкрд╛рдпрд╛, рдЙрд╕рдХрд╛ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╡рд┐рд╡рд░рдг рджреЗ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдкрд░ рдХрд┐рд╕реА рднреА рдЪрд░реНрдЪрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд▓реЛрдЧ рд╡рд╛рдИрдПрдПрдордПрд▓-рдЖрдзрд╛рд░рд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВрдЧреЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ docker-compose рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдЬреЗрдирд░реЗрдЯ рдХрд░реЗрдВ, рдЬреЛ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдФрд░ рдиреМрдХрд░реА рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЯреВрд▓ рдЪреБрдирдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реЛ рд╕рдХрддреА рд╣реИред

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

ytt рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ YAML рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдпрд╣ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рд╕рд╣реА рдЙрдкрдХрд░рдг рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдФрд░ рдпрд╣ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ YAML рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░, рдкрд╛рдпрдерди рдХреЗ рдПрдХ рд╕реБрдкрд░рд╕реЗрдЯ рд╕реНрдЯрд╛рд░рд▓рд╛рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рдмрд╛рдж, рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрд╣реБрдд рдЧрдиреНрджрд╛ рд╣реЛ рдЧрдпрд╛, рдФрд░ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдФрд░ рд╡рд╛рдИрдПрдПрдордПрд▓ рдХреЗ рдЯреБрдХрдбрд╝реЗ, рд╕рд╛рде рд╣реА рдкрд╛рдЗрдерди рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдЬреИрд╕реЗ рд╢рдмреНрджрдХреЛрд╢ рдФрд░ рд╕рд░рдгреА рдФрд░ рд╡рд╛рдИрдПрдПрдордПрд▓ рдЯреБрдХрдбрд╝реЗ рдХрд╛ рдорд┐рд╢реНрд░рдг (рдЬреЛ рдХреБрдЫ рд╣рдж рддрдХ рдЯреЗрдХреНрд╕реНрдЯ рдХреА рддрд░рд╣ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдереЛрдбрд╝рд╛ рд╕рд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдПрдХ HTML рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЗрдВрдЬрди рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдЬреИрд╕реЗ рдЯреИрдЧ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИ) рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЕрдВрддрддрдГ рдмрд╣реБрдд рд╕рд╛рд░реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реБрдИрдВ рдФрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрд╣реБрдд рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рдЧрдИред рдврд▓ рднреА рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрдиреВрдареА рдореВрд▓ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдпрд╣ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдореЗрдЯрд╛рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИ рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╕рдЦреНрддреА рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдЕрд╕рдВрд░рдЪрд┐рдд YAML рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реЛрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЬрд▓реНрджреА рд╕реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдпрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдЬреЗрдПрд╕рдУрдПрди рдФрд░ рд╣рд╛рд╕реНрдХреЗрд▓ рдХреЗ рдорд┐рд╢реНрд░рдг рдХреА рддрд░рд╣ рдереЛрдбрд╝рд╛ рд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдореБрдЭреЗ рдЙрд╕ рднрд╛рд╖рд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд┐рдЪрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рднрд╛рд╖рд╛ рдореЗрдВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

CUE рдФрд░ Jsonnet рджреЛрдиреЛрдВ JSON- рдЙрдиреНрдореБрдЦ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрдиреНрд╣реЗрдВ рдПрдХ рдХрдирд╡рд░реНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХрдард┐рди рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рдлрд┐рд░ рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдврд▓, CUE рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдФрд░ Jsonnet рдореЗрдВ рдХрдорд┐рдпреЛрдВ рд╕реЗ рдкреИрджрд╛ рд╣реБрдИ рдереАрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ , рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдзрд┐рдХ рдерд╛; рд╢рд╛рдпрдж рдЗрд╕реЗ рдареАрдХ рд╕реЗ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рд╕рдордп рдХреЗ рд╕рд╛рде рдпрд╣ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реАрдпреВрдИ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЯреЗрдореНрдкрд▓реЗрдЯ рдиреМрдХрд░реА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рдФрд░ рд╕реНрдХреАрдорд╛рдЯрд╛ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрдиреНрдореБрдЦ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЬрд▓реНрджреА рд╕реЗ рдЬреЗрд╕рдирдиреЗрдЯ рдкрд░ рдЪрд▓рд╛ рдЧрдпрд╛ рдФрд░ рдХрд╛рдо рдХреЛ рдмрд╣реБрдд рдЬрд▓реНрджреА рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ред

рдЕрдВрдд рдореЗрдВ, рдпрд╣ рд╕рдм рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдкреВрд░реЗ рд╕рдордп рдореИрдВ рдЗрди рдЙрдкрдХрд░рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рд▓рд┐рдХреНрд╡рд┐рдб рдЯреИрдЧ рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХреЗ HTML рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреА рд╕рд╛рджрдЧреА рд╕реЗ рдХрд░ рд░рд╣рд╛ рдерд╛, рдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рд▓рд┐рдХреНрд╡рд┐рдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдЬреЗрдХрд┐рд▓ рд╕рд╛рдЗрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдореБрдЭреЗ рдХрднреА рднреА рдПрдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдкреИрдХреЗрдЬ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореВрд▓ рд▓реВрдкрд┐рдВрдЧ рдФрд░ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕реАрдзреЗ рдЗрди-рдкреНрд▓реЗрд╕ рдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛, рдпрд╣ рд╢рд╛рдпрдж рд╣реЛрдЧрд╛ рдиреМрдХрд░реА рдХреЗ рд▓рд┐рдП рднреА рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд░рд╣рд╛; Jsonify рд╢рд╛рдпрдж JSON рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рд▓рд┐рдХреНрд╡рд┐рдб рд╢реБрджреНрдз YAML рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдлрд┐рд░ рд╕реЗ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реЛ рдЬрд╛рддреА рд╣реИред

+1 docker-compose рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд╛рдо рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдмреАрд╕реНрдкреЛрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рдкреАрдЫреЗ рдПрдХ рдкреНрд░реЗрд░рдгрд╛ рдереА рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЯрд┐рдХрдЯ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг envs рдХреЛ k8s рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдШрдВрдЯрд┐рдпреЛрдВ рдФрд░ рд╕реАрдЯреА рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рди рдерд╛ рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЬрд▓реНрджреА рдПрдХ рд╕рдорд╛рди рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЙрдЪрд┐рдд рдард╣рд░рд╛рдпрд╛ред рджрд╛рд░реНрд╢рдирд┐рдХ рдЪрд░реНрдЪрд╛ (рд░рдЪрдирд╛ рдмрдирд╛рдо рд╡рд┐рд░рд╛рд╕рдд рдЖрджрд┐) рдореБрдЭреЗ рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рд╕реЗ рдПрдХ рд╡реНрдпрд╛рдХреБрд▓рддрд╛ рдХреА рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ (рд▓рд╛рдн рдХреЗ рд╕рд╛рде - рд▓рдЧрднрдЧ 3 рд╕рд╛рд▓ рдмрд╛рдж рднреА рдЕрдирд╕реБрд▓рдЭрд╛)ред рдЬрд╛рд╣рд┐рд░ рд╣реИ рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ docker-compose рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред

+1:+1:

рдореИрдВрдиреЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ dev / test / ci рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдерд╛, рдЬрд╣рд╛рдВ рдореИрдВ ./config/{dev,test,ci}/compose.yaml рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрде рдореЗрдВ рдПрдХ рд▓рд┐рдЦреЗрдВ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рдореЗрд░реЗ рдкрд╛рд╕ .env рдЬрд┐рд╕рдореЗрдВ COMPOSE_ENV=dev , рд▓реЗрдХрд┐рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рдереЗ, рдФрд░ рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдореИрдВ ci рдореЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рджреВрдВрдЧрд╛ред

рдореИрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░рдХреЗ рдФрд░ рдЗрд╕реЗ рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬрд╝ рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рдХреЗ рдЪреМрдВрдХ рдЧрдпрд╛ рд╣реВрдВ рдЬреЛ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдмрд╕ рд╣рдореЗрдВ jinja2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рджреЗрдВ рдФрд░ рдЬреЛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡рд╣ рдХрд░реЗрдВред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ Docker-Compose рдХрдо DRY рд╡рд┐рд░реЛрдзреА рд╣реЛрдЧрд╛ред :'(

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ extends v1.27 (https://github.com/docker/compose/pull/7588) рдХреЗ рдмрд╛рдж рд╕реЗ docker-compose рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИред

рдПрдХ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдЬрд╣рд╛рдВ рдореИрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рднрд╛рд░реА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдХреЛрдб рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдореЗрд░рд╛ рдбреЙрдХрд░ рджреЗрд╡ рдФрд░ рдкреНрд░реЛрдб рдХрдВрдкреЛрдЬрд╝ рдлрд╛рдЗрд▓реЗрдВ рджреЛрдиреЛрдВ docker-images.yml рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛрддреА рд╣реИрдВ, рдЬрд╣рд╛рдВ рдХреЗрд╡рд▓ рдореВрд▓ рд╕реЗрд╡рд╛ рд╕реВрдЪреАрдмрджреНрдз рд╣реЛрддреА рд╣реИ рдФрд░ рд╕реЗрд╡рд╛ рдХреА рдЫрд╡рд┐ рдХрд╛ рдПрдХ рдЯреИрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрддрд╛ рд╣реИред

v3 рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╕рд╛рди рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

moxiegirl picture moxiegirl  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gg7 picture gg7  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

noahwhite picture noahwhite  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gndgnd picture gndgnd  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dbanck picture dbanck  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ