(рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдкреБрд░рд╛рдирд╛ рдмрд╣реБрдд рд╕рд╛рд░рд╛ рд╕рд╛рдорд╛рди рдЬрдорд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред)
docker-compose.yml
рдореЗрдВ рдХрд┐рд╕реА рднреА * рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рдорд╛рди рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЛрдЧ рдЗрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╣ рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рдореИрдВ рд╕рдВрддреБрд╖реНрдЯ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЕрд░рд╛рдЬрдХрддрд╛ рдкреИрджрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реИред
рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд░реЗрдХрдХрди рд╣реИрдВред
рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдЬреЛ _must_ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рдпрд╛рдиреА рдХрд┐ рдХрдВрдкреЛрдЬрд╝ рди рд╣реЛрдиреЗ рдкрд░ рдЪрд▓рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджреЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдПрдХ рджрд░реНрдж рд╣реЛрдЧрд╛ рдЬрдм рдЖрдк рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕реЗ рдорд┐рд▓ рдЧрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдпрд╛ рддреЛ рдХреБрдЫ рдРрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ, рдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдорд╡реАрдкреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдпрд╛ рддреЛ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкреАрдЫреЗ-рд╕рдВрдЧрдд-рд╕рдВрдЧрдд рддрд░реАрдХреЗ рд╕реЗ рджреЛрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдорд╛рд░реНрдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдХ рд╕реНрдерд╛рдкрд┐рдд рдорд╛рдирдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдордЬрдмреВрдд рдорд╛рдорд▓рд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рднрд╛рд░реА рдирд╣реАрдВ рд╣реИ - рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдиреНрдпреВрдирддрдо рд╣реИрдВред
${VARIABLE}
- рдЕрдЧрд░ VARIABLE
рдкрд░реЗрд╢рд╛рди рд╣реИ рддреЛ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИ${VARIABLE-default}
- default
VARIABLE
рдЖрдЙрдЯрдкреБрдЯ рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╣реИ${VARIABLE?}
- рдЕрдЧрд░ VARIABLE
рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдмрд╛рд╣рд░ рд╣реИрдВhttps://github.com/docker/compose/pull/845 рдиреЗ рдПрдХ рдмреИрд╢-рд╢реИрд▓реА ${VARIABLE:default}
рд╕рд┐рдВрдЯреИрдХреНрд╕ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рдЬреЛ POSIX рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕рдорд╛рди рд╣реИ рд▓реЗрдХрд┐рди рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИред
рдкрд╛рдпрдерди рдХреЗ os.path.expandvars
рдлрдВрдХреНрд╢рди POSIX рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдорд╛рдорд▓реЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:
>>> from os.path import expandvars
>>> expandvars('${HOME}')
'/Users/aanand'
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕реЗ рдХрдо рд╕реЗ рдХрдо 2 рд╕рдорд╕реНрдпрд╛рдПрдВ рдорд┐рд▓реАрдВ:
`` `
expandvars ( '$ {рд╕реЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛}')
'$ {рд╕реЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛}'
`` `
- рд╡рд┐рдХреГрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЗрд╕рдХрд╛ рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ:
`` `
expandvars ( '$ {рдЧреГрд╣')
'$ {рдЧреГрд╣'
`` `
рдЕрдм рддрдХ, https://github.com/docker/compose/pull/845 рд╣рдорд╛рд░реЗ рдирд┐рдХрдЯрддрдо рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд╣реВрдВ рдЬреЛ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЯреЗрдВрдкрд▓реЗрдЯ рдХрд░рдирд╛ рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рдХрд╛рдо рд╣реИ, рдФрд░ рд▓реЛрдЧ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреВрдЯреЗ рд╣реБрдП рд╕рд╛рдорд╛рдиреЛрдВ рдХреЛ рдбрд╛рд▓рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдордЬрдмреВрдд, рд╕рдЦреНрдд рдФрд░ рдЙрдкрдпреЛрдЧреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдореБрдХреНрдд рд╣реЛред рджреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ:
рд╡рд╣рд╛рдБ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреИрд╢ рдХреА рддрд░рд╣ рдЪрд░ рдкреНрд░рдХреНрд╖реЗрдк рдХреЗ рдЕрдЪреНрдЫреЗ рдкрд╛рдпрдерди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ - рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреБрдЫ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдмрдирд╛рдирд╛ рдХрдВрдкреЛрдЬрд╝ рдХреЛрдбрдмреЗрд╕ рдХреЛ рдмреНрд▓реЛрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред
* рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреНрдпрд╛ рдХреЛрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреБрдВрдЬреА рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо _shouldn't_ рдкреНрд░рдХреНрд╖реЗрдк рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ?
рдЖрдк рдЗрди рд╕реНрдерд╛рдкрд┐рдд UNIX рдорд╛рдирдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рддрдиреА рджреВрд░ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? (рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдпрд╣ рдПрдХ рдбрд┐рдлреИрдХреНрдЯреЛ рдорд╛рдирдХ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдирдХ рд╣реИред)
рдХрд┐рд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛ рдХрднреА-рдХрднреА рдЧрд▓рддреА рд╕реЗ рдбреЙрдХреНрд╕рдлрд╛рдЗрд▓реНрд╕ рдореЗрдВ рдкреЛрд╕рд┐рдХреНрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рд╡реЗ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдереЗред рддреЛ рдпрд╣ рдореБрдЭреЗ рдПрдХ рдЦреБрд╢ рдЯреВрд░рд┐рд╕реНрдЯ рдмрдирд╛ рджреЗрдЧрд╛ред
@kojiromike рд╣рдореНрдо, рдЗрд╕рд▓рд┐рдП POSIX рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдбреЙрдХреНрд╕ рдкрд░ рдкрдврд╝рдиреЗ рд╕реЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ / рд╢рдмреНрджрд╛рд░реНрде рдХреЛ рдЧрд▓рдд рд╕рдордЭрд╛ред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдкрд░ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рд╣реИред
рдореИрдВ рдкреБрд░рд╛рдиреЗ рд╕реВрддреНрд░ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╣рдо рддреБрд░рдВрдд рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЕрдВрдд рдореЗрдВ рджрд░реНрдж рдмрд╣реБрдд рдмрдбрд╝рд╛ рдерд╛ рдФрд░ рд╣рдордиреЗ POSIX рд╢реИрд▓реА рдореЗрдВ рдЪрд░реЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдпрдо рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ bahs рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдИред рдЗрд╕рдиреЗ рдареАрдХ рдХрд╛рдо рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдЕрдВрддрддрдГ рд╣рдордиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдПрдХ рдореБрджреНрджрд╛ рдерд╛ред рдЖрдкрдХреЛ рдкреВрд░реНрд╡рдкреНрд░рдХреНрд░рдордХ рдХреЛ рдкрд╣рд▓реЗ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдм рд╣рдо docker yaml рдлреИрд▓реА рд╣реБрдИ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдФрд░ рд▓рдХреНрд╖реНрдп рдкрд░ рдЕрдорд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рдо рдмреЗрд╣рддрд░ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореИрдВ рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬрд╝рд┐рдВрдЧ рдкрд╛рд╕ рдЪрд░ рдХрд╛ рд╕рдорд░реНрдердХ рдерд╛, рдлрд┐рд░ рднреА рдореБрдЭреЗ рдЕрдм рдпрдХреАрди рдирд╣реАрдВ рд╣реИред
рдПрдХ рдЖрджрд░реНрд╢ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдмрд▓реНрдХрд┐ рдпрд╣ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ docker рдиреЗ рд╕рд╣реА рдХрд┐рдпрд╛ рд╣реИред рдПрдХ рдорд╛рдпрдиреЗ рдореЗрдВ рдпрд╣ рдПрдХ рдРрд╕рд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ рдЬреЛ рджреЛрдиреЛрдВ рдкрд░ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред рддреЛ рдХреНрдпрд╛ рдбреВрдХрд░ рдореЗрдВ рддреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ? рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рднреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХ рдорд░реНрдЬ рдирд╣реАрдВ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдХреЗрд╡рд▓ рд╡рд╣реА рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдк рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ рдФрд░ рдпрд╣ рдХреИрд╕реЗ рдХреНрд░рд┐рдпрд╛ рд╣реИред рдХреЗрд╡рд▓ рджреЛ рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ рдЬреЛ рдорд╛рдпрдиреЗ рд░рдЦрддреА рд╣реИрдВред
#Common
elasticsearch:
image: zinvoice/elasticsearch
hostname: elasticsearch
restart: always
dns: 172.17.42.1
ports:
- "9200:9200"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /data/elasticsearch:/opt/elasticsearch/data/elasticsearch
logstash:
image: zinvoice/logstash
hostname: logstash
dns: 172.17.42.1
restart: always
ports:
- "5000:5000"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
kibana:
image: zinvoice/kibana
hostname: kibana
dns: 172.17.42.1
restart: always
ports:
- "5601:5601"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
logspout:
image: zinvoice/logspout
hostname: logspout
command: logstash://logstash.docker:5000
restart: always
dns: 172.17.42.1
ports:
- "8003:8000"
volumes:
- /var/run/docker.sock:/tmp/docker.sock
doorman:
image: zinvoice/doorman
hostname: doorman
restart: always
dns: 172.17.42.1
ports:
- "8085:8085"
# inherited
elasticsearch:
extends:
file: ../common.yml
service: elasticsearch
logstash:
extends:
file: ../common.yml
service: logstash
kibana:
extends:
file: ../common.yml
service: kibana
logspout:
extends:
file: ../common.yml
service: logspout
doorman:
environment:
- DOORMAN_GITHUB_APPID=xxxxxxxx
- DOORMAN_GITHUB_APPSECRET=xxxxxx
links:
- nginxtrusted
extends:
file: ../common.yml
service: doorman
рдЗрд╕рд▓рд┐рдП рдореЗрд░реА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдлрд┐рдХреНрд╕ рдбреЙрдХрдЯрд░ рдиреЗ рдЗрд╕реЗ рдПрдХ рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрдо рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдЖрдкрдХреЛ рдпрд╣ рднреА рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ YAML рдЖрдкрдХреЛ рдЬрд┐рддрдиреА рдЬрд╝рд░реВрд░рдд рд╣реИ рд╡рд╣ рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдпрджрд┐ рдЖрдк рдорд╛рдирдХ YAML рдХреЗ рд╕рд╛рде рдЪрд┐рдкрдХреЗ рд░рд╣рддреЗ рд╣реИрдВ рддреЛ рдлрд╛рдЗрд▓ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЕрдиреНрдп рдЙрдкрдХрд░рдг рдФрд░ UI рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред
YAML "рдиреЛрдб рдПрдВрдХрд░" рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдФрд░ YAML "рдлрд╝рд╛рдЗрд▓ рдорд░реНрдЬ" рдпрд╣ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
FYI рдХрд░реЗрдВ: рдпрд╣ рдЪрд░реНрдЪрд╛ рдЕрдм # 1380 рдкрд░ рдЬрд╛рд░реА рд╣реИ
@ Vad1mo рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ extends
рдХрдо рд╣реИред рдЙрд╕ рдЕрдиреБрднрд╡ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдпрд╣рд╛рдВ рдирд╣реАрдВ рдЖрддреЗ рд╣реИрдВ?
рдмреЗрд╢рдХ! рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЖрд╕рд╛рди рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рд░рдЪрдирд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдЖрдкрдХреЛ рдЖрдзреЗ рд╕реЗ рднреА рдЕрдзрд┐рдХ рдЪрд░ рдЧреБрдЬрд░рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдмреЗрд╣рддрд░ рд░рдЪрдирд╛-рд╡рд┐рд╕реНрддрд╛рд░ рдЪрд░ рдХреЛ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдмрдирд╛ рджреЗрдЧрд╛ред рдХрдо рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдмрдирд╛рддреЗ рд╣реИрдВред
рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ $PWD
volumes
, рдЗрд╕рд▓рд┐рдП рдЯреАрдо рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрд╡рд▓рдкрд░ рдЬрд╣рд╛рдВ рднреА рдФрд░ рдкрде рдЕрднреА рднреА рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдорд╛рдЙрдВрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рд╡рд╣рд╛рдВ рдПрдХ рд░реЗрдкреЛ рдХреНрд▓реЛрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
elasticsearch:
image: zinvoice/elasticsearch
volumes:
- $PWD:/app
@mattes рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд░реНрдерд┐рдд рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ .:/app
рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
@aanand рдПрдХ рдкрд╛рдпрдерди рдкреАрдИ рдореЗрдВ рдПрдХ рдЧрдВрджрд╛ рд╣реИрдХрдЕрдк рдХрд┐рдпрд╛ред рд╢рдирд┐рд╡рд╛рд░ рдХреЗ рд▓рд┐рдПред
@kojiromike рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред
@рдЖрдирдВрдж рдореЗрд░рд╛ рдЗрд░рд╛рджрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрднреА рдХреБрдЫ рдХреАрдбрд╝реЗ рд╣реИ (рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ shlex
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдФрд░ рдкреАрдЖрд░ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ, рдмрд┐рд▓реНрдХреБрд▓ред
@dnephin рдХреИрд╕реЗ $HOME
/ ~
?
@nafg рдЙрди рджреЛрдиреЛрдВ рдХреЛ рд╡реЙрд▓реНрдпреВрдо рдХреЗ рд╣реЛрд╕реНрдЯ рдкрде рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
@dnephin рджрд┐рд▓рдЪрд╕реНрдк, b / c рдХрд┐рд╕реА рддрд░рд╣ рдореИрдВ '$ HOME' рдирд╛рдо рдХреА рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдЖ ...
@aanand рдЬреИрд╕реЗ рдХрд┐ "$ { VARIABLE: default }" рдкреНрд░рд╕реНрддрд╛рд╡, global_extends (рдпрд╛ "рдЖрдпрд╛рдд") рдХреЗ рд╕рд╛рде, рдпрд╣ рдмрд▓реНрдХрд┐ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдмрди рдЬрд╛рдПрдЧрд╛ред
рдкреНрд░рд╢реНрди: рдХреНрдпрд╛ рдпрд╣ рдкреЛрд░реНрдЯ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛? рдЬреИрд╕реЗ - "$ {WEB_ PORT: 80 }: 80"?
рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдПрдХ рд╣реА рдорд╢реАрди / рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдРрдк рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрдкрд┐рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рд╕реБрдирдирд╛ рдпрд╛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреАрдп рдбреЛрдореЗрди рдирд╛рдореЛрдВ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред
рд╣рд╛рдВ, рдЖрдк рдРрд╕рд╛ рдХрд░ рдкрд╛рдПрдВрдЧреЗред
рдореИрдВ docker-compose scale my_app=3
рд╕рд╛рде рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ var рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ docker-compose.yml
server:
image: alexanderilyin/docker-teamcity-server
ports:
- "8111:8111"
volumes:
- .TeamCity:/root/.BuildServer
links:
- mysql
mysql:
image: alexanderilyin/docker-mysql
volumes:
- .MySQL:/var/lib/mysql
environment:
MYSQL_DATABASE: teamcity
MYSQL_USER: teamcity
MYSQL_PASSWORD: teamcity
MYSQL_ALLOW_EMPTY_PASSWORD: yes
agent:
image: alexanderilyin/docker-teamcity-agent
links:
- server
рдФрд░ рдореИрдВ рдПрдЬреЗрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП scale
рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рд▓реЙрдиреНрдЪ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рд▓рд┐рдП рдбрд╛рдпрдиреЗрдорд┐рдХ рд╡реЙрд▓реНрдпреВрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
agent:
image: alexanderilyin/docker-teamcity-agent
volumes:
- .agent_{$AGENT_INSTANCE_ID}:/opt/buildAgent
links:
- server
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЫрд╡рд┐ рдирд╛рдо рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЪрд░ рдХреЛ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛
рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╢рд╛рдЦрд╛ рдХреЗ рд▓рд┐рдП CI рдкрд░ рд╕реНрдерд╛рдиреАрдп рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП https://github.com/openshift/source-to-image рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВред
рдЧрддрд┐рд╢реАрд▓ рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдирд╛ рдбреЙрдХ-рдХрдВрдкреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдиреНрдпреБрдЕрд▓ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ..: -1:
рд▓реЗрдХрд┐рди рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╣реА рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐ рд░рди рдЙрдкрд╕рд░реНрдЧ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП COMPOSE_PROJECT_NAME
рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдирд╛рдореЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЬрдЯрд┐рд▓ рддрд░реНрдХ рдФрд░ рдЕрдкрдардиреАрдп yml рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
@andrerom рдЕрдиреБрд╕рд░рдг рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдбреЙрдХреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдо рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЫрд╡рд┐ рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд Sets the project name, which is prepended to the name of every container started by Compose
рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
web:
image: <I_AM_DYNAMIC>
рдЖрд╣, рдореЗрд░реА рдЧрд▓рддреА рд╣реИред
рд╕реЛрдЪрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ
<I_AM_DYNAMIC>:
image: nginx
рдбрд╛рдпрдирд╛рдорд┐рдХ рдЗрдореЗрдЬ (рдФрд░ рдмрд┐рд▓реНрдб) рд╕рдВрджрд░реНрдн рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдорд╛рдпрдиреЗ рд░рдЦреЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧ рдФрд░ рдЧреИрд░ рдбрд┐рдмрдЧ рдмреЗрд╕ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реЛрдЧрд╛ред
рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ _ (рдЬреЛ рдХрд┐ @ рдореИрдХреНрд╕рд┐рдо-рдлрд┐рд▓рд┐рдореЛрдиреЛрд╡ рдХреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рд╣реИ) рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: _ рдПрдХ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рдЯреИрдЧ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд╡реАрдирддрдо, рд▓реЗрдХрд┐рди рдЖрд╕рд╛рдиреА рд╕реЗ yml рдмрджрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдХреБрдЫ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдлрд╝рд╛рдЗрд▓ _ (рдореВрд▓ рд░реВрдк рд╕реЗ CI рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ) _ред
@andrerom рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ: +1:
рдХреНрдпрд╛ рдпрд╣ рднреА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ ??
web:
environment:
- FOO=${whoami}
@ k0377 рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╡реЗ рдРрд╕рд╛ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рд╢реЗрд▓ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, $USER
рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╢рд╛рдпрдж рдЖрдкрдХреЛ рд╡рд╣реА рджреЗрдВрдЧреЗред
@рдЖрдирдВрдж рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВ? Jinja2 рд╡рд╣рд╛рдБ рд╣реИ рдФрд░ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдЯреЗрдВрдкрд▓реЗрдЯрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЧреИрд░-рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рд╣реИ (рдФрд░ regexps рдЙрд╕ рд╢рд╛рдВрдд рдирд╣реАрдВ рд╣реИрдВ) рддрд╛рдХрд┐ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдареЛрд╕ рд╕рд╛рдмрд┐рдд рд╣реЛред
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рд╣рдо YAML рдПрдВрдХрд░ рдФрд░ рд╕рдВрджрд░реНрдн https://gist.github.com/bowsersenior/979804 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╣рдо рдЪрд░ рдХреЗ рдЙрдкрдпреЛрдЧ (рд╕рд╛рдордЧреНрд░реА рдХреЗ рдмреАрдЪ рдореЗрдВ рдЪрд░ рдирд╛рдо рдЗрдВрдЬреЗрдХреНрд╖рди) рддрдХ рд╕реАрдорд┐рдд рд╣реИрдВред
Jinja2 рдХреЗ рд▓рд┐рдП +1: рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдврд╛рд▓рдирд╛ рдлрд┐рдЯ рд╣реЛрдЧрд╛ рдФрд░ ansible рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рдорд╛рдорд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (yml рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЕрд╕реНрдерд╛рдпреА)
26 рдордИ, 2015 рдХреЛ рджреЛрдкрд╣рд░ 1:25 рдмрдЬреЗ, рдЯрдирдЬрд╝реЛрд░ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @ithub.com рдиреЗ рд▓рд┐рдЦрд╛:
@aanand https://github.com/aanand рдХреНрдпреЛрдВ рдирд╣реАрдВ рдореМрдЬреВрджрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдЗрдВрдЬрди рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВ? Jinja2 рд╡рд╣рд╛рдБ рд╣реИ рдФрд░ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИредрдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдЯреЗрдВрдкрд▓реЗрдЯрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЧреИрд░-рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рд╣реИ
(рдФрд░ regexps рдХрд┐ рд╢рд╛рдВрдд рдирд╣реАрдВ рд╣реИрдВ) рддрд╛рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореМрдЬреВрджрд╛ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ,
рд╡рд╣ рдареЛрд╕ рд╕рд╛рдмрд┐рдд рд╣реБрдЖред-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/docker/compose/issues/1377#issuecomment -105493447
Jinja2 рдЬрд░реВрд░рдд рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдПрдХ _lot_ рдХрд░рддрд╛ рд╣реИ:
рд╣рдо рдЙрд╕ рдХрд┐рд╕реА рднреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХрдВрдкреЛрдЬрд╝ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдЬрд┐рдВрдЬрд╛ 2 рдХреЛ рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рд╡реЗрдЯреЗрдмрд▓ рдЪрд░ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓реВрдкрд┐рдВрдЧ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрди рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдЖрдк рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
рдЬрд╣рд╛рдБ рдЖрдк рдХреБрдЫ рдЧреНрд░рд╛рд╣рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВред
рдПрдХреНрд╕рдЯреЗрдВрд╢рди / рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рд╡рд░реНрддрдорд╛рди рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдЕрд▓реНрдкрд╡рд┐рдХрд╕рд┐рдд рд╡рд┐рд╕реНрддрд╛рд░ рддрдВрддреНрд░ред
рдореМрдЬреВрджрд╛ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд▓реНрдЯрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
Tue рдкрд░, 26 рдордИ, 2015 рдХреЛ 1:56 PM, Aanand Prasad рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:
Jinja2 рдЬрд░реВрд░рдд рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдПрдХ _lot_ рдХрд░рддрд╛ рд╣реИ:
- рд╕рд╢рд░реНрдд,
- рдкрд╛рд╢рди
- рд╡рд┐рд╕реНрддрд╛рд░ / рд╡рд┐рд░рд╛рд╕рдд
- рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ
- рдлрд┐рд▓реНрдЯрд░
рд╣рдо рдЙрд╕ рдХрд┐рд╕реА рднреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХрдВрдкреЛрдЬрд╝ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдЬрд┐рдиреНрдЬрд╛ 2 рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдХреЗрд╡рд▓ рдЪрд░ рдХреЛ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд┐рд░ рд╡рд╣ рдПрдХ рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/docker/compose/issues/1377#issuecomment -105498909
рд╡реЗ _might_ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдХрдореНрдкреЛрдЬрд╝ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдлреЙрд░реНрдореЗрдЯ рджреЛрдиреЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдПрдХ рдПрдХрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рджреЛрдиреЛрдВ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреЗрдВрдкрд▓реЗрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рдмрд╛рдВрдзреЗрдВрдЧреЗред рдФрд░ рдХреЛрдИ рдпреБрдХреНрддрд┐ рдирд╣реАрдВред рдпрд╣ рдмрд╕ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред
@ рдЖрдирдВрдж рдХреБрдЫ рдиреЛрдЯ рдпрд╣рд╛рдБ:
jinja2 рдЖрдпрд╛рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реЗ
рдЯреЗрдореНрдкрд▓реЗрдЯ = рдЯреЗрдореНрдкрд▓реЗрдЯ ('рд╣реИрд▓реЛ {{рдирд╛рдо}}!')
template.render (рдирд╛рдо = "Aanand")
рдирдорд╕реНрддреЗ рдЖрдирдВрджрдВрдж!
рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдЖрдк рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
jinja2.sandbox рдЖрдпрд╛рдд рд╕реЗ ImmutableSandboxedEnvironment
env = ImmutableSandboxedEnvironment ()
рдЯреЗрдореНрдкрд▓реЗрдЯ = env.from_string ('рд╣реИрд▓реЛ {{рдирд╛рдо}}!')
template.render (рдирд╛рдо = "Aanand")
рдирдорд╕реНрддреЗ рдЖрдирдВрджрдВрдж!
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╣реЛрдЧрд╛:
рдЖрдпрд╛рдд os
jinja2.sandbox рдЖрдпрд╛рдд рд╕реЗ ImmutableSandboxedEnvironment
env = ImmutableSandboxedEnvironment ()
рдЯреЗрдореНрдкрд▓реЗрдЯ = env.from_string ('рд╣реИрд▓реЛ {{рдирд╛рдо}}!')
template.render (** os.environ)
- рдХреНрдпрд╛ рд╣рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдП? рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд╕рд╛рде рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ({{рдорд╛рди | рдбрд┐рдлрд╝реЙрд▓реНрдЯ ("рдбрд┐рдлрд╝реЙрд▓реНрдЯ")}})
- рдХреНрдпрд╛ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ YAML рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреЗрдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЬрд┐рдиреНрдЬрд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? рдЙрд╕реА рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдорд╛рдиреНрдп YAML рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рд╕рд░рд▓ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП - рдпрджрд┐ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рд╣реБрдИ рдереА рдпрд╛ рджреА рдЧрдИ рдереА рддреЛ рджрд┐рдП рдЧрдП рдЬрд┐рдВрдЬрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдФрд░ рд╡рд╛рдкрд╕реА рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
- рдпрджрд┐ рдЖрдк рдЬрд┐рдирдЬрд╛ 2 рдХреЛ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ - рддреЛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ {{рдЪрд░}} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрдо рд╕реЗ рдХрдо рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
- Django рд░реАрдкреЗрдХреНрд╕рдк рдХреЛ рдкрд╛рд░реНрд╕ рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЙрддреНрдкрд╛рджрди-рдЧреНрд░реЗрдб рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдареАрдХ рд░рд╣рддрд╛ рд╣реИред
рдЖрдпрд╛рдд os
рдЖрдпрд╛рдд рдлрд┐рд░ рд╕реЗ
рдЯреЗрдореНрдкрд▓реЗрдЯ = "рд╣реИрд▓реЛ {{рдирд╛рдо}}!"
re.sub ("{{\ _ s _ ([a-zA-Z0-9 _] +?] \ s_}}", рд▓рдВрдмреЛрджрд░ m: os.environ.get (m.group (1), ''), рдЯреЗрдореНрдкрд▓реЗрдЯ)
рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ - рд╣рдореЗрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд░реЛрд▓рд┐рдВрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рднреА рд╕рдорд╛рдзрд╛рди рд╣рдо рд▓реЗрддреЗ рд╣реИрдВред
рдЕрдЧрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯреНрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдП рддреЛ рдореИрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЙрджрд╛ http://mustache.github.io , рдЬреЛ рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЕрдиреНрдп рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ рдЗрдВрдЬрди рдХреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
@рдЖрдирдВрдж рдореИрдВ рдЖрдкрдХреА рдмрд╛рдд рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рднреА рд╕рд╛рджрдЧреА рдкрд╕рдВрдж рд╣реИ рдФрд░
рд░рдЪрдирд╛ dsl рдХреА рд╕рдлрд▓рддрд╛ред
рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдмрд╛рд╣рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдореЗрдЯрд╛-рд╕рдВрдЧреАрддрдХрд╛рд░ рдХрд╣рддреЗ рд╣реИрдВред рдпрд╣
рдПрдХ compose.tpl.yml рдФрд░ рдПрдХ variables.yml рд▓реЗрддрд╛ рд╣реИ, рдПрдХ docker-compose.yml рдмрдирд╛рддрд╛ рд╣реИ
рдФрд░ рд╣рдо рдЪрд▓реЗред
рдЬреИрд╕рд╛ рдХрд┐ @tonnzor рдиреЗ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ рдХрд┐ рдЕрдЬрдЧрд░ рдХреЛрдб рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдкрд░рд┐рдЪрдпред
Tue рдкрд░, 26 рдордИ 2015 рдХреЛ 4:52 рдмрдЬреЗ, рд╕реЗрдмреЗрд╕реНрдЯрд┐рдпрди рд╡реИрди рд╕реНрдЯрд┐рдЬреЗрди <
рд╕реВрдЪрдирд╛рдПрдВ@github.com> рдиреЗ рд▓рд┐рдЦрд╛:
рдпрджрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИрдВ рддреЛ рдореИрдВ рдПрдХ _generic_ templating рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреИрд╕реЗ http://mustache.github.io , рдЬреЛ рдХрдИ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ
рднрд╛рд╖рд╛рдУрдВред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЕрдиреНрдп рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ рдЗрдВрдЬрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ
рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/docker/compose/issues/1377#issuecomment -105551631
рд╣рдореНрдо ... рддреЛ рдЕрдм command
рдФрд░ entrypoint
рдЬреИрд╕реА рдЪреАрдЬрд╝реЛрдВ рдХреЗ рд▓рд┐рдП compose.yml (рдЬреЛ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдгрдирд╛рддреНрдордХ рднрд╛рд╖рд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЛрдиреЛрдВ exec
рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ sh -c
рд╢реИрд▓реА рдореВрд▓реНрдп? рдпрд╣ рднреНрд░рд╛рдордХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рдгрд╛рдореА рд╢реЗрд▓ рдХрдорд╛рдВрдб рдХреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднреА рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЬрд╛рдПрдЧреА, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдПрдХ рдЪрд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ *
рддреЛ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдПрдХ рднрд╛рд╖рд╛ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореЗрдВ рдЕрдиреБрдХреНрд░рдо рдмрдЪрдирд╛ рддрдм рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдЧрд┐рд░рд╛рд╡рдЯ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рдХрдИ рд╕реНрддрд░ рд╣реЛрддреЗ рд╣реИрдВред
@kojiromike рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ рдЕрдЧрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ! рдмреЗрд╣рддрд░ рдЬреНрдЮрд╛рдд рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдореВрд▓ рдкреНрд░рд╢реНрди рд╣реИ; рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдХреЛ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЯрдпреВ рдкрд░, 26 рдордИ 2015, 11:02 рдмрдЬреЗ рдХреНрд░рд┐рд╕реНрдЯреЛрдл рд╡рд┐рдЯреНрдЬрдиреА рд╕реВрдЪрдирд╛рдПрдВ @github.com
рд▓рд┐рдЦрд╛ рдерд╛:
@рдЖрдирдВрдж рдореИрдВ рдЖрдкрдХреА рдмрд╛рдд рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рднреА рд╕рд╛рджрдЧреА рдкрд╕рдВрдж рд╣реИ рдФрд░
рд░рдЪрдирд╛ dsl рдХреА рд╕рдлрд▓рддрд╛ред
рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдмрд╛рд╣рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдореЗрдЯрд╛-рд╕рдВрдЧреАрддрдХрд╛рд░ рдХрд╣рддреЗ рд╣реИрдВред рдпрд╣
рдПрдХ compose.tpl.yml рдФрд░ рдПрдХ variables.yml рд▓реЗрддрд╛ рд╣реИ, рдПрдХ docker-compose.yml рдмрдирд╛рддрд╛ рд╣реИ
рдФрд░ рд╣рдо рдЪрд▓реЗред
рдЖрдк рдмрд┐рдирд╛ рдХрд┐рд╕реА рдирдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЖрдЬ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЬрд┐рдВрдЬрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдХрд┐рд╕реА рддрд░рд╣ рдордВрдЧрд╡рд╛рдпрд╛ рдЧрдпрд╛ред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рд╕рд┐рд░реНрдл рдПрдиреНрд╡рд╕рдмрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ
рдЖрджреЗрд╢ред
рдХреНрдпрд╛ рд╕рдЪ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд░рдЪрдирд╛ рд╕реНрдЯрдб рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдкрдврд╝ рд╕рдХрддреА рд╣реИред
рдпрд╣ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред
рдЬреИрд╕рд╛ рдХрд┐ @tonnzor рдиреЗ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ рдХрд┐ рдЕрдЬрдЧрд░ рдХреЛрдб рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдкрд░рд┐рдЪрдпред
Tue рдкрд░, 26 рдордИ 2015 рдХреЛ 4:52 рдмрдЬреЗ, рд╕реЗрдмреЗрд╕реНрдЯрд┐рдпрди рд╡реИрди рд╕реНрдЯрд┐рдЬреЗрди <
рд╕реВрдЪрдирд╛рдПрдВ@github.com> рдиреЗ рд▓рд┐рдЦрд╛:
рдпрджрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИрдВ рддреЛ рдореИрдВ рдПрдХ _generic_ templating рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреИрд╕реЗ http://mustache.github.io , рдЬреЛ рдХрдИ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ
рднрд╛рд╖рд╛рдУрдВред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЕрдиреНрдп рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ рдЗрдВрдЬрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ
рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИрдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/docker/compose/issues/1377#issuecomment -105551631
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/docker/compose/issues/1377#issuecomment -105554730 src = "
https://ci6.googleusercontent.com/proxy/iSBXyl7D8PwFM4p1mGPHCR7bQctunieGbhyGkvo0QIMIjmAYE3I0Mt96yl1fGrqcuOzxV4APP8ZRIw-5_qd6nzps9Mpr6jTAydCC4xs8JDgqm93aIbWvN1eMlxykrz7iwYooyAQdqL4RFJokeEbnBkZm5mhgKg=s0-d-e1-ft#https://github.com/notifications/beacon/AAGAUO8xqz29B2SUoG7QFPUy848_JJW9ks5oNIJlgaJpZM4EMysO.gif
">
рд╕реНрдЯрдб рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП +1ред рдореБрдЭреЗ рдмрд╛рд╣рд░реА рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдлрд╛рдЗрд▓реЗрдВ рдЖрд╕рдкрд╛рд╕ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рдпрд╣ рдПрдХ рдорд╣рд╛рди рдкрд╣рд▓рд╛ рдХрджрдо рд╣реИ, рдФрд░ рдХрдИ cli рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдПрдХ рдЖрдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдЪрд▓реЛ рдХрд░рддреЗ рд╣реИрдВ
: +1:
рдЗрд╕рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
envsubst compose.tmpl.yml | docker-compose -f - up -d
WFMред : +1:
рдмрд╕ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ yml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбреВрдХрд░ / рдбрд┐рд╕реНрдЯреНрд░реАрдмреНрдпреВрд╢рди рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ рдорд╛рдиреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг https://github.com/docker/distribution/blob/master/docs/configuration.mdoveroverconconconiguration- рд╡рд┐рдХрд▓реНтАНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
^ ^ @ рдЖрдирдВрдж
@thaJeztah рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд╣рдо рддрдм рдЖрджреЗрд╢реЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
DOCKER_COMPOSE_IMAGE_NAME='my_image:is_dynamic'
рджрд┐рд▓рдЪрд╕реНрдк рджреГрд╖реНрдЯрд┐рдХреЛрдг, рд▓реЗрдХрд┐рди рдореИрдВ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реВрдВ - рд╡рд░реНрдмреЛрдЬрд╝ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдирд╛рдо, рдмрд╣реБрдд рд╕рд╛рд░реЗ рджреЛрд╣рд░рд╛рд╡ рдпрджрд┐ рдЖрдк рдХрдИ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдПрдХ рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдирд┐рд╣рд┐рдд рд╣реИ, рддрд╛рд░ рдХреЗ рднреАрддрд░ рдХреЛрдИ рдкреНрд░рдХреНрд╖реЗрдк рдирд╣реАрдВред
@рдЖрдирдВрдж рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рдирд╣реАрдВ рдмреЗрдЪреЗ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдХреНрдпреЛрдВрдХрд┐ "рдбреЙрдХрд░" рд╕рдВрдЧрдарди рдХреЗ рднреАрддрд░ рдЗрд╕рдХреА рдПрдХ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИред
рдмрд╕ https://github.com/kelseyhightower/confd рдкрд░ рдареЛрдХрд░ рдЦрд╛рдИ рд╣реИ рдЬреЛ рдмреНрдпрд╛рдЬ рдХреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрд╣ http://golang.org/pkg/text/template/#pkg -overview рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
@olalonde рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ,
@aanand рдореИрдВ +20 рдЖрдкрдХреЗ рдореВрд▓ рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд░ рд╣реВрдБ, рдЯреНрд╡реАрдХ рдХреЗ рд╕рд╛рде рдХрд┐ рдЪрд┐рддреНрд░ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЯреИрдЧ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдмрд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд╛рдПрдВ, рд╣рдо рд╕рднреА рдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд░реИрдкрд░ рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЙрдиреНрдлрд┐рдбреЗрдВрд╕ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдмрдЪрд╛рдПрдВрдЧреЗ;)
рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрдЬрдЧрд░ рдкреИрдХреЗрдЬ рд▓рд┐рдЦрд╛ рд╣реИ рдЬреЛ рдореЗрд░реА рдорджрдж рдХрд░рддрд╛ рд╣реИред рдпреЛрдЬрдирд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдХрдорд╛рдВрдб рдХреЛ рдбреЙрдХрдЯрд░ рдХрдВрдкреЛрдЬрд╝ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯрдирд▓ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЖрдк рдЗрд╕реЗ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред
рдЗрд╕реЗ https://github.com/webcrofting/meta-compose/ рдкрд░
рдореЗрдЯрд╛-рдХрдВрдкреЛрдЬрд╝ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕реЗ рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП!
рдпрд╣рд╛рдВ рдмрдбрд╝рд╛ +1 - рдореИрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрддреНрд╕рд╛рд╣рд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдЦреАрдВрдЪрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред POSIX рд╡рд┐рд╕реНрддрд╛рд░ рд╢рд╛рдпрдж Jinja2 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреНрд▓реАрдирд░ рд╣реИ, рд▓реЗрдХрд┐рди рджреЛрдиреЛрдВ рддрд░рд╣ рд╕реЗ рдареАрдХ рд╣реИред
рдпрд╣рд╛рдВ рд╕реЗ рднреА рдмрдбрд╝реА +1ред рдХрд╛рдлреНрдХрд╛ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рдбрд╛рдпрдирд╛рдорд┐рдХ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдЖрдИрдбреА рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдЕрдзрд┐рдХ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдХреЗ рдЙрддреНрдкрд╛рджрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ (рдЬреЛ рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ)ред
рдореИрдВ рдЗрд╕ рдлреАрдЪрд░ рдХреЛ рд▓реЗрдХрд░ рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реВрдВред
POSIX рд╡рд┐рд╕реНрддрд╛рд░ рд╢рд╛рдпрдж Jinja2 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреНрд▓реАрдирд░ рд╣реИ, рд▓реЗрдХрд┐рди рджреЛрдиреЛрдВ рддрд░рд╣ рд╕реЗ рдареАрдХ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ POSIX рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдПрдХ рдФрд░ рддрд░реНрдХ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рддрд░реНрдХ-рдХрдо рд╣реИред рдЬрд┐рдирдЬрд╛ 2 рд╕рд╢рд░реНрдд / рд▓реВрдк рд▓реЙрдЬрд┐рдХ рдХреЗ рдХреБрдЫ рдЕрдВрд╢реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрд╕реНрдерд╛рдпреА рдЗрдВрдЬрди рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ "рд▓реЙрдЬрд┐рдХ-рд▓реЗрд╕" рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рднреА рдХрд░рддреЗ рд╣реИрдВ)ред рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рдФрд░ YAML рдХреЛ рдорд┐рдХреНрд╕ рдХрд░рдирд╛ рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ рдХрд╛рдлреА рдЕрдЬреАрдм рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рдРрд╕реЗ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реИ? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдм рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреЗрд╡реЛрдВ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдЙрддреНрддрд░ рд▓реЗрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рд╡рд┐рднрд┐рдиреНрди рдореБрджреНрджреЛрдВ рдФрд░ рдкреАрдЖрд░ рдХреЛ рдкрдврд╝рдирд╛, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред
рдпрджрд┐ рдЖрдк рдХрд░рддреЗ рд╣реИрдВ, рдХрд┐рд╕ рддрд░рд╣ рдХреЗ рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде? рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд▓реЛрдЧ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рддреГрддреАрдп рдкрдХреНрд╖ рдЙрдкрдХрд░рдг рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдзрдиреНрдпрд╡рд╛рдж !
рдареАрдХ рд╣реИ рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл https://github.com/docker/compose/pull/76 рджреЗрдЦрд╛
рд▓рд┐рдВрдХреНрдб рдореБрджреНрджреЛрдВ / рдкреАрдЖрд░ рдкрд░ рдХреБрдЫ рдЪрдХреНрд░ рдЪрд▓рд╛ред
AFAIK, рдиреЗрдЧрдиреЗрдХреНрд╕ рд╕рдореБрджрд╛рдп рдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХреЛ рдЕрдкрдирд╛рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЪрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд▓рд┐рдП рднреАред рдХреНрдпреЛрдВ? рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╡реЗ рдЕрднреА рднреА рдПрдХ рдЖрджрд░реНрд╢ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХрд╛ рдЪрдпрди рдХрд░ рд░рд╣реЗ рд╣реЛрдВ: рдореБрд╕реНрдХрд╛рди:ред рдкрд░рд┐рдгрд╛рдо? рджрд░реНрдж (рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд)!
@hadim
рд╡рд┐рднрд┐рдиреНрди рдореБрджреНрджреЛрдВ рдФрд░ рдкреАрдЖрд░ рдХреЛ рдкрдврд╝рдирд╛, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред
рдпрд╣ рдореБрджреНрджрд╛ рдЙрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдирд┐рд╢реНрдЪрд┐рдд рдЙрддреНрддрд░ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЦреЗрдж рд╣реИ рдХрд┐ рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рдкрд╛рдпрд╛: рд╣рд╛рдБ, рд╣рдо рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ POSIX- рд╢реИрд▓реА рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рдеред
рд╢реБрдХреНрд░рд┐рдпрд╛ @aanand !
Thanks, @aanand.
рдореЗрд░реЗ рд▓рд┐рдП +1ред рдореБрдЭреЗ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ --dns = (docker0 рдмреНрд░рд┐рдЬ рдХрд╛ рдкрддрд╛), рдФрд░ рдореБрдЭреЗ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЕрдЧрд░ рд╡рд╣ рдХрднреА docker рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдФрд░ / рдпрд╛ рд╢реЗрд▓ рд╕рд╣реА рд╣реИред рдореЗрдЯрд╛-рдХрдВрдкреЛрдЬрд╝ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рджреВрд░рд╕реНрде DOCKER_HOST рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЬреИрд╕реЗ рдХрд┐ docker-swarm рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рди рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗред
: +1: рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВ рдпрд╛ рддреЛ рдПрдХ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ .yml рдлрд╝рд╛рдЗрд▓ рдЬрдирд░реЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╛ рд╕рд┐рд░реНрдл docker-compose рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ --link-ing dockersред
:рдердореНрд╕ рдЕрдк:
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреБрдирд┐рдпрд╛рджреА рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдкреНрд░рдХреНрд╖реЗрдкреНрдп рд╕рд╛рдзрд╛рд░рдг рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рд╕рд░рд▓ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА:
Ansible рдЬреИрд╕реЗ рдЙрдкрдХрд░рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЯреЗрдВрдкрд▓реЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ рдкреВрд░реНрдг рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди comose.yml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЛрдИ рднреА рдЧрддрд┐рд╢реАрд▓ рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдпрд╣ рдмрд╣реБрдд рд╕реАрдорд┐рдд рд╣реИред
рдорд░реНрдЬ рдХрд┐рдП рдЧрдП PR # 1488 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ docker-compose
рд▓рд┐рдП рдПрдХ рдХреЙрдиреНрдлрд┐рдЧрд░ рдлрд╛рдЗрд▓ рдХреЛ рдкрд╛рдЗрдк рдХрд░рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд░рдЦрддрд╛ рд╣реВрдВред рдореИрдВ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ docker-compose
рдиреЛрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЙрдард╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
var spawn = require('child_process').spawn;
var compose = spawn('docker-compose', ['--file' + '-' + 'up']);
compose.stdin.setEncoding = 'utf-8';
compose.stdout.on('data', function (data) {
console.log('"docker-compose --file - up" stdout: "%s".', data);
});
compose.stderr.on('data', function (data) {
console.log('"docker-compose --file - up" returned an error: "%s".', data);
});
compose.on('close', function (code) {
if (code !== 0) {
console.log('"docker-compose --file - up" existed with an erroneous code: "%s".', code);
} else {
console.log('"docker-compose --file - up" existed with code: "%s". SUCCESS!', code);
}
});
compose.stdin.write("redis: {\"image\": \"redis\"}\n");
compose.stdin.end();
Node.js рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рдкрд╛рдЗрдк рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕ рдкрд░ рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг?
рдПрдХ рдФрд░ рдмрд╛рдд рдореИрдВ рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ рд╣реИ docker-compose
1.4.0-RC1 рдЬреИрд╕реЗ рдХреБрдЫ рдорд╛рд▓реВрдо рд╣реЛрддрд╛ рд╣реИ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрджреЗрд╢ рднреЗрдЬ рд░рд╣рд╛ рд╣реИ Starting...
рдпрд╛ Attaching...
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП stderr
рдХреЗ рдмрдЬрд╛рдп stdout
ред
@kadishmal рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрди рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдореБрджреНрджреЗ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ?
рдПрдХ рдЕрдиреНрдп рдЙрдореНрдореАрджрд╡рд╛рд░ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ / рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди: рдкрд╛рдпрдерди рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ, рдЬреИрд╕рд╛ рдХрд┐ рдкреАрдИрдкреА 0292 рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЯреЗрдордкреНрд▓реЗрдЯ ред
рдпрд╣ POSIX рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕рдорд╛рди рд╣реИ:
$foo
foo
рдХреЗ рдореВрд▓реНрдп рдореЗрдВ рдлреИрд▓рддрд╛ рд╣реИ${foo}
foo
рдХреЗ рдореВрд▓реНрдп рдореЗрдВ рдлреИрд▓рддрд╛ рд╣реИ$
, ${
, $}
, ${}
, ${foo
, $ {foo}
, ${ foo}
, ${foo }
рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВрдХрдорд┐рдпрд╛рдВ:
$$
рдХреЗ рдмрдЬрд╛рдп \$
редрдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднреЗрд╕ рдореЗрдВ рдПрдХ рдЖрд╢реАрд░реНрд╡рд╛рдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: YAML \$
рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдбрдмрд▓-рднрд╛рдЧрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧреЛрдВ рдХреЛ \\$
рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдПрдХ рдбреЙрд▓рд░ рдХрд╛ рдЪрд┐рд╣реНрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рдореИрдВрдиреЗ # 1765 рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИред
+1
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЬрдЧрд╣ рд╣реИ, рдпрд╛ рдЕрдЧрд░ рдореБрдЭреЗ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ env рдкреВрд░реНрд╡рддрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рдд рд╢реЗрд▓ рд╕реЗ рдПрдХ рдЪрд░ рдЬреЛ docker-compose рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, docker-compose.yml рдХреЗ рднреАрддрд░ рдХрд┐рд╕реА рднреА рдЪрд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдХрдВрдЯреЗрдирд░ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рд╕реА рднреА рдЪрд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЬрдм рдореИрдВ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рддрд╛ рд╣реВрдБ рддреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:
рдбреЛрдХрд░-compose.yml:
test:
image: ubuntu
environment:
- FOO="from compose"
рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ env
рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдПрдВ:
docker-compose run test env | grep FOO
рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ FOO="from compose"
рджреЗрддрд╛ рд╣реИред рдкрд░рдиреНрддреБ рдлрд┐рд░:
FOO="from shell" docker-compose run test env | grep FOO
FOO="from compose"
рднреА рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдореИрдВ FOO="from shell"
рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ред
рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрднреА рднреА рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЪрд░ рдкреНрд░рдХреНрд╖реЗрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдмрджрд▓рдиреЗ рд╕реЗ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ" рдорд╛рдорд▓реЗ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ - рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ environment:
рдкрд░рд┐рднрд╛рд╖рд╛ / рдореВрд▓реНрдп docker-compose.yml рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рд░рдирдЯрд╛рдЗрдо рдкрд░, рдХрд┐рд╕реА рднреА рдЕрддрд┐рд░рд┐рдХреНрдд YAML рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ред
@ рдпрджрд┐ рдЖрдк рдЗрд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ env
рдХрдорд╛рдВрдб рдХреЛ рдкреГрдердХ test
рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ FOO
'рдХрд╛ рдореВрд▓реНрдп from compose
(рд╕рд┐рд░реНрдл рд╣реИ) рдЬреИрд╕рд╛ рдХрд┐ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕реЗ docker-compose
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред рд▓реЗрдХрд┐рди рдЙрд╕ рдХрдВрдЯреЗрдирд░ рдХреЗ рдмрд╛рд╣рд░ рдЕрдЧрд░ docker-compose
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреНрд░рд┐рдВрдЯ рдлрдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдХрдорд╛рдВрдб рд╕реЗ рдкрд╣рд▓реЗ 'рд╢реЗрд▓' рд╕реЗ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдорд╛рди рд╣реИ (рд╕рд╛рде рд╣реА рд╕рд╛рде) docker-compose
рдкреНрд░рдХреНрд░рд┐рдпрд╛) рдЖрдк рдЗрд╕реЗ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ FOO
рдореВрд▓реНрдп from shell
рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рдереЗ, рд▓реЗрдХрд┐рди рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдмрд╣реБрдд рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдпрд╣ рдерд╛ред (рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рдЕрдВрдЧреНрд░реЗрдЬреА рдХреЗ рдмрд╛рд╡рдЬреВрдж рдЖрдк рдореЗрд░реА рдмрд╛рдд рд╕рдордЭреЗрдВрдЧреЗ)ред
@smileart рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд╣ рд░рд╣реЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐, test
рдХрдВрдЯреЗрдирд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ, рдпрд╣ docker-compose
(рдпрд╛ рдХрдо рд╕реЗ рдХрдо, рдбреЙрдХ-рдХрдВрдкреЛрдЬ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ), рдФрд░ рдбреЙрдХ-рдХрдВрдкреЛрдЬ рд╕реЗ рдЕрдкрдирд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдЦреБрдж "рдмрд╛рд╣рд░реА" рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдк рдЗрд╕ docker-compose.yml рдХреЗ рд╕рд╛рде рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
test:
image: ubuntu
environment:
- FOO
рдлрд┐рд░ рдХрдорд╛рдВрдб:
FOO="from shell" docker-compose run test env | grep FOO
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рд╢реЗрд▓ рд╕реЗ" рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рдкреНрд░рд╢реНрди рдкреВрд░реНрд╡рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ рдЪрд░ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ, - FOO
, рдореИрдВ рдЪрд░ рдХреЛ рдмрд╛рд╣рд░ рд╕реЗ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ - FOO=something
_and_ рдХреЛ рдмрд╛рд╣рд░ рд╕реЗ рдПрдХ рдЪрд░ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдкреВрд░реНрд╡рддрд╛ рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП? рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡реЗрд░рд┐рдПрдмрд▓ IMHO рдХреЛ рдХреЙрдиреНрдлрд┐рдЧ рдлрд╛рдЗрд▓ рдкрд░ рдкреВрд░реНрд╡рддрд╛ рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдПред
@fazy рдУрд╣, рдорд╛рдл рдХрд░рдирд╛, рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдирд╣реАрдВ FOO="from shell" docker-compose run test env | grep FOO
рдореЗрдВ рдЕрдкрдиреЗ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ docker-compose.yml
рдФрд░ рдореИрдВ рдЗрд╕реЗ рд╣рдореЗрдВ рдореЗрдЬрдмрд╛рди рдХреЗ рджреЗрддрд╛ рд╣реИ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ FOO
рдореВрд▓реНрдпред рддреЛ рдпрд╣ рд╕рд┐рд░реНрдл рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЬреАрдм рд╣реИ: рд╕реНрдорд╛рдЗрд▓реА: рдореИрдВ рдкрд╣рд▓реЗ рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдХреА рд╕реНрдерд╛рдкрдирд╛ рд╕реЛрдЪрд╛ docker-compose
рдкрд░ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИ docker-compose
рдФрд░ docker-compose
рдХреЗрд╡рд▓ рдпрд╣ рдореЗрдВ рдлреЗрдВрдХ рдмрд┐рдирд╛ рдХрдВрдЯреЗрдирд░ред рдЕрдм рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рдерд╛ред
рдореИрдВ рд╕рд┐рд░реНрдл $
рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреЗ рджреЛрд╖ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдИ https://github.com/docker/compose/issues/1377#issuecomment -124571722ред рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл FOO=ba$e
рддрдм FOO='ba$e'
(рдпрд╣ рднреВрд▓рдХрд░ рдХрд┐ рдЗрд╕реЗ "рдирдВрдЧреЗ" рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рдлрд┐рд░ FOO=ba\$e
, рдлрд┐рд░ FOO=ba\\$e
, рдлрд┐рд░ рдореИрдВрдиреЗ рд╣рд╛рд░ рдорд╛рди рд▓реА рдФрд░ рдЪрд▓рд╛ рдЧрдпрд╛ рдбреЙрдХреНрд╕, рдмрд╕ рдпрд╣ рдЬрд╛рдирдХрд░ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ " $
$
рд▓рд┐рдП рдПрд╕реНрдХреЗрдк рдЪрд╛рд░ рд╣реИ"ред рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ "рдХрдо рд╕реЗ рдХрдо рдЖрд╢реНрдЪрд░реНрдп-рдИрд╢" рдирд╣реАрдВ рдерд╛ред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред
@ рд╕реАрдЯреА-clearhaus рд▓рд┐рдЦреЗрдВ рдХреЗрд╡рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдирд╣реАрдВ рд╣реИ $
рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП $
ред рдпрд╣ рдЖрдкрдХреЛ рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ рдореЗрдВ рднреА рдорд┐рд▓реЗрдЧрд╛ред рддреЛ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдореБрд╣рд╛рд╡рд░рд╛ рдХрд╛рдлреА рдкрд░рд┐рдЪрд┐рдд рд╣реИред
рдореБрдЭреЗ рдореМрдЬреВрджрд╛ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд╕рдВрдж рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ @ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдореВрд▓ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ POSIX рд╕рд┐рдВрдЯреИрдХреНрд╕ рдПрдХрджрдо рд╕рд╣реА рд╣реИ:
${ENV-default}
рдореЗрд░рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рд╣реЛрд╕реНрдЯ рдкреЛрд░реНрдЯ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рд╕реЗрд╡рд╛ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ:
PORT=8123 docker-compose up
рдЗрд╕реЗ рдореЗрд░реЗ docker-compose.yml
рдЬреЛрдбрд╝рдХрд░:
web:
ports:
- "${PORT-8000}:5000"
рдХреНрдпрд╛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрднреА рднреА рдпреЛрдЬрдирд╛ рдФрд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рд╣реИ?
рдореИрдВ рдХреЗ рд╕рд╛рде рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдлреИрд▓реА рд╣реБрдИ рд╣реИ , рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдЧрдВрджрд╛ рд╣реЛ рдЧрдпрд╛ред рдЗрддрдирд╛ рд╣реА рдирд╣реАрдВ рдореБрдЭреЗ рдХреЗрд╡рд▓ рдПрдХ рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рднреА docker-compose.yml
рдХреА рдирдХрд╝рд▓ рдХрд░рдиреА рдкрдбрд╝реА, рд╡рд╣рд╛рдБ рднреА рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ _change_ рдПрдХ рдЙрдЬрд╛рдЧрд░ рдкреЛрд░реНрдЯ рд╕реЗрдЯрд┐рдВрдЧ рд╣реИ, рдЖрдк рдХреЗрд╡рд▓ add to
рдкреЛрд░реНрдЯ рдХреА рд╕реВрдЪреА рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИред
рдЬрдм рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рд╡рд┐рдлрд▓ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ? рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИ рдФрд░ рдЬрд╛рд░реА рд░рд╣рддрд╛ рд╣реИред рд╕рд┐рд░реНрдл рд╡рд╛рдкрд╕реА рдФрд░ рддреНрд░реБрдЯрд┐ рдПрдХ рдмреЗрд╣рддрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд╣реАрдВ рд╣реЛрдЧрд╛ ...
WARNING: The FOO variable is not set. Defaulting to a blank string.
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд▓рд┐рдП POSIX рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП +1
рд╢рд╛рдпрдж рдореБрдЭреЗ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП env_file рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬреИрд╕реЗ:
рдбреЛрдХрд░-compose.env:
DB_PASSWORD=test
рдбреЛрдХрд░-compose.yaml:
...
service:
database:
env_file:
- ./docker-compose.env
environment:
- MYSQL_PASSWORD=${DB_PASSWORD}
webserver:
env_file:
- ./docker-compose.env
environment:
- WORDPRESS_DB_PASSWORD=${DB_PASSWORD}
рдХреНрдпрд╛ рдЗрд╕реЗ рдХрд┐рд╕реА рдФрд░ рддрд░реАрдХреЗ рд╕реЗ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛? рдореИрдВ рдПрдХ yaml рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛, рдЬрд┐рд╕реЗ envsubst рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рдЗрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред
рдЗрд╕ рдореВрд▓реНрдп рдХреЛ рд╕реАрдзреЗ env_file
рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрд╕рдореЗрдВ рдХреНрдпреЛрдВ рди рдбрд╛рд▓реЗрдВ?
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ рдХрд┐ рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдЬреЛ рджреЛ рдЬрдЧрд╣реЛрдВ рдкрд░ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рддреЛ рдпрд╣ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред # 2636 рдЖрд╢рд╛рдЬрдирдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЪрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдЦреНрдд рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореМрдЬреВрджрд╛ рд╕реАрдорд╛рдПрдВ рд╣рдореЗрдВ docker- рд░рдЪрдирд╛ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд░рдг рд▓рд┐рдкрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреА рд╣реИрдВред рдореБрдЭреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NODE_ENV=${NODE_ENV:-dev}
рдЬреИрд╕реЗ рд╕рд╛рдорд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП SOME_NUMBER=$((96*60))
рдХрд╛рдо рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдХреНрдпрд╛ рдпрд╣ рдЖрдЧрд╛рдореА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрд▓реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛?
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП +1
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП +1ред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрддрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ @ darkn3rd - рдореБрдЭреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╕реЗрдЯрдЕрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣ рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдЬреЛ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ рд╡рд╣ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдкрдиреА рдЯреАрдо рдХреЛ 2 vars рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░реВрдБ ... рдпрд╛ рдПрдХ рдореЗрдХрдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдерд╛ред
рдЕрдЧрд░ рдХреЗрд╡рд▓ рдореИрдВ рд╣реА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:
user: $((id -u)):$((id -g))
рд╡рд╣ рдореЗрд░реА рд╕рд╛рд░реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реЗрдЧрд╛
@mgor рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЖрдк рдЗрд╕реЗ envsubst
рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
env $(cat docker-compose.env | xargs) envsubst < docker-compose.tmpl > docker-compose.yml
рдореБрдЭреЗ рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рд▓рдЧрд╛рддрд╛рд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдкреНрд░рджреВрд╖рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛), рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред
@OJFord @mgor рдереНрд░реЗрдб рдХреЛ рд╣рд╛рдИрдЬреИрдХ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдПрдХ рдХреНрд▓реАрдирд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ CLI рдЯреВрд▓реНрд╕ рдмрдирд╛рдП рд╣реИрдВ; envset рдФрд░ slv ред
envset development -- slv docker-compose.tpl > docker-compose.yml
envset рдПрдХ рд╢реЗрд▓ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдореМрдЬреВрджрд╛ рд╢реЗрд▓ рд╕реЗрд╢рди рдореЗрдВ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рд▓реЛрдб рдХрд░реЗрдЧрд╛, slv рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдореИрдВ @OJFord рд╕реЗ рд╕рд╣рдордд
рдореБрдЭреЗ рд╕рдЯреАрдХ рдмрддрд╛рдПрдВ: рд╣рдо 40 рдбреЗрд╡реЗрд▓рдкрд░реНрд╕ рдХреА рдПрдХ рдЯреАрдо рд╣реИ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬрд╝ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП git рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдпрджрд┐ рдореИрдВ рдЙрдиреНрд╣реЗрдВ doit-compose.yml рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдЧрд┐рдЯ рджреНрд╡рд╛рд░рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдХреЛрдИ рд╕рдВрд╢реЛрдзрд┐рдд docker-compose.yml рдлрд╝рд╛рдЗрд▓ рдХреЛ рдзрдХреНрдХрд╛ рджреЗрдЧрд╛ ... рдореБрдЭ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░реЗрдВ, рдпрд╣реА рдорд╛рдорд▓рд╛ рд╣реЛрдЧрд╛ред
рдореИрдВ "рдмреЗрд╕ рдХрдВрдкреЛрдЬрд╝рд░ рдлрд╛рдЗрд▓ рдЬреЗрдирд░реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ" рдЬрд┐рд╕реЗ git рджреНрд╡рд╛рд░рд╛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ docker-compose.yml рджреНрд╡рд╛рд░рд╛ рдмрдврд╝рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЬреЗрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ 'a Makefile or bashscript' рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА ... рд╡рд╣ рджрд┐рди рдЖрдПрдЧрд╛ рдЬрдм "base" docker file "рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рдЯреАрдо рдХреЛ рдЗрд╕ рдмрд╛рдд рдХреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реЛрдЧреА рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдкреАрдврд╝реА рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ред"
рдПрдХ "рдПрдирд╡реА" рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рднреА, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ "рдмрд┐рд▓реНрдб" рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЗрд╕ рдлрд╛рдЗрд▓ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЯреАрдо рд╕реЗ рдкреВрдЫрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдЧрд░ рдбреЙрдХ-рдХрдВрдкреЛрдЬрд╝ рдХреЛ рдмреИрд╢ (рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рдЬреЛ рдХреБрдЫ рдФрд░ рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИ рдХрд┐ рдИрдПрдирд╡реА рд╕рдВрд╕реНрдХрд░рдг) рдпрд╛рдо рдлрд╛рдЗрд▓ рдореЗрдВ рд╕реЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд░реВрд░рддреЛрдВ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ред
рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рдЖрджреЗрд╢ рдореЗрдВ рдореЗрд░рд╛ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдЖрджрд░реНрд╢ рд╣реИ: рдореБрдЭреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рдФрд░ рдЬреАрдЖрдИрдбреА тАЛтАЛрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдИрдПрдирд╡реА рд╕рдВрд╕реНрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдереНрд░реЗрдб рдорд╛рди рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЕрдкрдиреА рдЯреАрдо рд╕реЗ рдПрдХ .env рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдкрдиреА рдЖрдИрдбреА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ... рдореЗрд░реЗ рдФрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рд░рд▓, рд╕рднреА рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред
рд╕рдЯреАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: рдореБрдЭреЗ рдПрдХ рдбреЙрдХ-рдХрдореНрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рджреЗрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬрд┐рд╕реЗ рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЧрд┐рдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкрд░ рд╣реИред
рдпрд╣ рдкреБрд▓-рдЕрдиреБрд░реЛрдз рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдЖрдк рдореБрдЭреЗ рдмреЗрд╣рддрд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВрдиреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде docker-compose.yml рдлрд╝рд╛рдЗрд▓ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдЕрднреА рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ... рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА ... рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ OPS рдпрд╛ рддреЛ docker рд▓реЙрдЧ рдпрд╛ syslog рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ ... рдЗрд╕рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдЖрдорддреМрд░ рдкрд░ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЧрдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ
default:
extends:
file: base.yml
service: base-${LOG_FORMAT:docker}
labels:
- "net.company.npmjs.datacenter=${DATA_CENTER}"
- "net.company.npmjs.env=${ENV}"
- "net.company.npmjs.hostname=${HOSTNAME}"
- "net.company.npmjs.role=${NPMO_ROLE}"
- "net.company.npmjs.log=${LOG_FORMAT}"
base-syslog:
log_driver: syslog
log_opt:
tag: "{{.ImageName}}/{{.Name}}/{{.ID}}"
base-docker:
log_driver: json-file
log_opt:
max-size: "128m"
max-file: "4"
рдпрд╣ рдХрдм рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛? рдореИрдВ рдХрдВрдкреЛрдЬ 1.7.0 рдкрд░ рд╣реВрдВ рдФрд░ рдпрд╣ рдЕрднреА рднреА рдирд╣реАрдВ рд╣реИ :(
рдХреГрдкрдпрд╛ рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рджреЗрдВ!
@marcellodesales : рд╢рд╛рдпрдж рдЖрдк рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ docker-compose.override.yml
рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ env var рдкрд░ +1ред рдЖрдЬрдХрд▓ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рдпрд╣ рд╣рдорд╛рд░рд╛ рдкреНрд░рдореБрдЦ рджрд░реНрдж рдмрд┐рдВрджреБ рд╣реИред
рдореИрдВ рдЕрдкрдиреЗ рдкреАрдЖрд░ # 3367 рдкрд░ рдЬреЛрд░ рджреВрдВрдЧрд╛ рдХрд┐ рд╡реЗ рдореЗрдЬрдмрд╛рди рд╕реЗ рдХреБрдЫ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХреЗрдВред :)
@pataquets I рдбреЙрди 'рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрднреА рддрдХ рдЕрдиреНрдп рдУрд╡рд░рд░рд╛рдЗрдб рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ ... рд╣рдорд╛рд░реА base.yml
рдлрд╝рд╛рдЗрд▓, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдбреНрд░рд╛рдЗрд╡рд░, рдЖрджрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕рднреА рд╕рдорд░реНрдерд┐рдд рд╕рд╛рдорд╛рди рджрд┐рдЦрд╛рддрд╛ рд╣реИ ... рдореИрдВ рдмрд╕ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЕрднреА рдФрд░ yml рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди рдореИрдВ рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреВрдВрдЧрд╛ред
+1
+1
+1
+1
рдбреЙрдХ-рдХрдВрдкреЛрдЬрд╝ рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╕реВрдЪрдирд╛?
+1
+1
FYI рдХрд░реЗрдВ: рдбреЙрдХ-рдХрдВрдкреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рд╕рдВрд╕реНрдХрд░рдг 1.7.0 рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЕрдкрдиреЗ рд░реВрдЯ docker-compose.yml
рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ .env
рдореЗрдВ рдбреЙрдХ-рдХрдВрдкреЛрдЬрд╝ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЪрд░ рднреА рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдбреЙрдХ рдЗрдВрдЬрди рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реЛрдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдмрд╛рдд рд╣реИред
рдХреНрдпрд╛ рд╕реЗрд╡рд╛ рдирд╛рдо рдХреЛ рдПрдХ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ?
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рд▓рд┐рдЦрдирд╛
services:
site_db:
image: mysql:5.7
рд╣рдо рд▓рд┐рдЦ рд╕рдХрддреЗ рдереЗ
services:
${CONTAINER_NAME}:
image: mysql:5.7
рдореЗрд░рд╛ рд▓рдХреНрд╖реНрдп рдХрдИ рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рд╕рдорд╛рди docker-compose.yml
рд░рдЦрдирд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ .env
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрджрд▓рдирд╛ рд╣реИред рдЕрднреА, рдореБрдЭреЗ рдЕрднреА рднреА рдХрдВрдЯреЗрдирд░ рдирд╛рдо рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдПрдХ рд╣реА рд╣реЛрд╕реНрдЯ рдкрд░ рдХрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВред рдФрд░ рдореБрдЭреЗ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛ рдХрд╛ рдЕрдкрдирд╛ рдирд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
@LouWii рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
services:
site_db:
container_name: "${CONTAINER_NAME}"
image: mysql:5.7
рдпрд╛ (рдХрдореНрдкреЛрдЬрд╝-рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рд░реВрдк 2.1 рдФрд░ рдКрдкрд░)
services:
site_db:
container_name: "${CONTAINER_NAME:-defaultname}"
image: mysql:5.7
рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ-рдирд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рддрдп рдХрд┐рдпрд╛? рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо _intended_ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрдВрдЯреЗрдирд░-рдирд╛рдореЛрдВ рдХреЛ рдЙрдкрд╕рд░реНрдЧ / рдирд╛рдо рджреЗрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╣реА рд╣реЛрд╕реНрдЯ рдкрд░ рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╡рд┐рд░реЛрдз рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред Https://docs.docker.com/compose/reference/envvars/#/composeprojectname рджреЗрдЦреЗрдВ
@thaJeztah рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ рдЕрднреА рднреА рд╕реАрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдбреЙрдХрдЯрд░ рдФрд░ рдбреЙрдХрдЯрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХреА рд░рдЪрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд╛рдо рд╕реЗрдЯ рдХрд░рдирд╛ рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рд▓рдЧрддрд╛ рд╣реИ, рдпрд╣ рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдХреБрд▓ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
рдХреНрдпрд╛ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреЗ рднреАрддрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП ${HOST_PORT + 1}
ред
рдЖрдк рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЬрд┐рдиреНрдЬрд╛ рдпрд╛ рдХреБрдЫ рдФрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рдЗрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...
Tue, Jan 24, 2017 рдХреЛ, 5:36 AM рд╕реИрдо рдПред рд╣реЛрд░реНрд╡рд╛рде-рд╣рдВрдЯ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:
рдХреНрдпрд╛ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреЗ рднреАрддрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП $ {HOST_PORT
- 1}ред
-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/docker/compose/issues/1377#issuecomment-274767368 ,
рдпрд╛ рдзрд╛рдЧрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AAGAUN5ZrU39dnVVVASwIHr5mGqJFxh3ks5rVdRIgaJpZM4EMysO
ред
рдХреНрдпрд╛ рдореИрдВ $
рдмрдЪ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ?
environment:
PATH: "$PATH:/home/appuser/.bundler/bin"
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореЗрдЬрдмрд╛рди рдХреЗ рдкреИрда рдЪрд░ рдореЗрдВ рдпрд╣ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдХрдВрдЯреЗрдирд░ рдирд╣реАрдВ
рдПрдХ рдбреЙрдХ-рдХрдВрдкреЛрдЬрд╝.рдорд╛рдЗрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдорд┐рд▓реА рд╣реИ?
рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдЬреЛрдбрд╝ рдпрд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж
@logicminds рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдпрд╣ рдХрд╣реАрдВ рднреА рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рдорд┐рд▓рд╛, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ $$
рдЕрдВрддрд░ рдмрдЪ рдЧрдП $
ред
environment:
PATH: "$$PATH:/home/appuser/.bundler/bin"
@elquimista рдХрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рдЙрдкрдпреЛрдЧреА рдкрд╛рдпрд╛ рд╣реИ https://github.com/mhart/alpine-node/issues/48#issuecomment -430902787
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛
$PWD
volumes
, рдЗрд╕рд▓рд┐рдП рдЯреАрдо рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрд╡рд▓рдкрд░ рдЬрд╣рд╛рдВ рднреА рдФрд░ рдкрде рдЕрднреА рднреА рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдорд╛рдЙрдВрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рд╡рд╣рд╛рдВ рдПрдХ рд░реЗрдкреЛ рдХреНрд▓реЛрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред