рдЬреИрд╕рд╛ рдХрд┐ https://github.com/docker/compose/issues/4315 рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, extends
рдлреАрдЪрд░ рдЬреЛ docker-compose
рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рдЕрдкрдиреА рдЦрд╛рдорд┐рдпреЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕реЗ рдЕрднреА рддрдХ рдЗрдВрдЬрди рдХреЗ рдХрдВрдкреЛрдЬрд╝ рдкреНрд░рд╛рд░реВрдк рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рдЕрдм рддрдХ, рд╣рдордиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рд▓рд╛рд╣ рджреА рд╣реИ рдХрд┐ рд╡реЗ v3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрдкрдиреА рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдХреЗрд╡рд▓ рд╕рдорддрд▓ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рд╣рдо рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЕрдкрдЧреНрд░реЗрдб рдкрде рдХреИрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛ рдЧрдП рд╣реИрдВ?
cc @dnephin @vdemeester
рдореИрдВрдиреЗ рдХреБрдЫ рдиреЛрдЯреНрд╕ рдЬреЛрдбрд╝реЗ рд╣реИрдВ 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 рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдЦреБрдж рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ:
services:
web:
image: alpine:3.6
build: .
environment:
DOMAIN:
PREFIX:
services:
web:
ports:
- "8080:8080"
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 рд╕реЗрдВрдЯ
-рдлрд┐рд▓рд┐рдкреНрдкреЛ
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдерд╛:
https://github.com/moby/moby/issues/31101#issuecomment -329482917 рдФрд░ https://github.com/moby/moby/issues/31101#issuecomment -329512231 рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛, рдЕрдм рдореИрдВ рдПрдХ рдЕрд▓рдЧ рд╕реНрдХреАрдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ v3 рдкрд░ рдЬрд╛ рд╕рдХрддрд╛ рд╣реВрдВ:
рдореИрдВ 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 рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рд▓ рдХрд┐рдП рдЧрдП рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕рд╛рде рдереВрдХ рд╕рдХрддрд╛ рд╣реИ:
рд╕рдВрдХрд▓реНрдк-рд░рдЪрдирд╛
(рдпрд╛ 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
рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░реА рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИрд╕реАрд╕реА: @ рд╣реИрдВрдбрдХреЛрдб
рдирд╡реАрдирддрдо рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдореИрдВ рдЕрдм _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
рдЖрдк рдореЗрдВ рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ 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 рдореЗрдВ рдХреНрдпреЛрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреА рджреБрдЦрдж рд╕реНрдерд┐рддрд┐ рдЕрдЧрд░ рд╣рдо рдЕрдкрдиреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╕рдВрдЪрд╛рд░ рдпрд╛ рд░рдЦрд░рдЦрд╛рд╡ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдирдИ рддрдХрдиреАрдХ рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд░рдЦрддреЗ рд╣реИрдВред
рд╕реНрдерд┐рддрд┐ рдХреА рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╡реНрдпрд╛рдЦреНрдпрд╛ (рдФрд░ рд╢рд╛рдпрдж рд╡рд░реНрддрдорд╛рди рд╕реВрддреНрд░ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рднреА) рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
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
рдкреЗрд╢реЗрд╡рд░реЛрдВ : рдкрд░реНрд▓ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдХрд░рдг рд╣реИ, рд╕рднреА рдкрд░реНрд▓ рдореЙрдбреНрдпреВрд▓ рднреА, рдкреАрдврд╝реА рддреЗрдЬ рд╣реИред
рд╡рд┐рдкрдХреНрд╖ : рдореБрдЭреЗ рд╣реИрдХреНрд╕ рд╕реЗ рдирдлрд░рдд рд╣реИ рд▓реЗрдХрд┐рди 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 рдПрдВрдХрд░ рдФрд░ рд╡рд┐рд▓рдп рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреБрд░рдВрдд рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдЧрд╛ред
# /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
# /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
рд╕реЗ рдЗрддрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ?рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рд╣реА рдЕрд╕реБрд╡рд┐рдзрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реЛ рдЬрд╛рддреА рд╣реИред рд╣рдореЗрдВ рдЗрд╕реЗ рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреЛрдЧреНрдп рд╣реИ, рд╡реИрд╕реЗ рднреАред
рдпрджрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрд░реНрдХ рд╣реИ, рддреЛ 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
рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдмрд╛рд╣рд░реА рдЯреВрд▓рд┐рдВрдЧ рдмрдирд╛рдирд╛ рдкрдбрд╝рд╛ рд╣реИред
рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЧрд┐рдЯрд▓реИрдм рд╕реАрдЖрдИ рд╡рд╛рдИрдПрдПрдордПрд▓ рдХрд┐рдП рд╣реИрдВред рдЗрд╕рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпреЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рдЬреЛ рдкрдардиреАрдп рдФрд░ рдкреНрд░рдмрдВрдзрдиреАрдп рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдФрд░ рдЕрдВрддрд┐рдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╣реИрдВ:
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 рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╕рд╛рди рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЗрддрдирд╛ рд╣реА рдирд╣реАрдВ, рдЪреЗрдВрдЬрд▓реЙрдЧ рдХрд╣рддрд╛ рд╣реИ "рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП 'рдЕрдкрдЧреНрд░реЗрдб рдХреИрд╕реЗ рдХрд░реЗрдВ' рджреЗрдЦреЗрдВ"ред рдореИрдВ "рдХреИрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ" рдХреЗ рд▓рд┐рдП рджреЗрдЦрддрд╛ рд╣реВрдВ, рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЕрдкрдЧреНрд░реЗрдб рдХреИрд╕реЗ рдХрд░реЗрдВ, рдФрд░ рдЬреЛ рдХрд╣рддрд╛ рд╣реИ рд╡рд╣ рд╣реИ "рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП 'рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗрд╡рд╛рдПрдВ' рджреЗрдЦреЗрдВ"ред рдореИрдВ "рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕реЗрд╡рд╛рдУрдВ" рдкрд░ рдЬрд╛рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдВрддрддрдГ рдЕрдкрдиреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рджреЗрдЦреВрдВрдЧрд╛, рдХреЗрд╡рд▓ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ "рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЪреЗрдВрдЬрд▓реЙрдЧ рджреЗрдЦреЗрдВ"ред
рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдпрд╣ рдПрдХ рдХреНрд░реВрд░ рдордЬрд╛рдХ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рд▓реЗрдЦрди рд▓реЗрдЦрдХ рдЦреЗрд▓ рд░рд╣рд╛ рд╣реИред