Compose: Docker-compose.yml рдореЗрдВ рдЗрдВрдЯрд░рдкреЛрд▓реЗрдЯ рдкрд░рд┐рд╡реЗрд╢ рдЪрд░

рдХреЛ рдирд┐рд░реНрдорд┐рдд 30 рдЕрдкреНрд░реИрд▓ 2015  ┬╖  109рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: docker/compose

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

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

рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд░реЗрдХрдХрди рд╣реИрдВред

рдЖрд╡рд╢реНрдпрдХ рдЪрд░ рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЪреВрдХ

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

рдПрдорд╡реАрдкреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдпрд╛ рддреЛ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкреАрдЫреЗ-рд╕рдВрдЧрдд-рд╕рдВрдЧрдд рддрд░реАрдХреЗ рд╕реЗ рджреЛрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдорд╛рд░реНрдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд╛рдХреНрдп - рд╡рд┐рдиреНрдпрд╛рд╕

рдПрдХ рд╕реНрдерд╛рдкрд┐рдд рдорд╛рдирдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдордЬрдмреВрдд рдорд╛рдорд▓рд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рднрд╛рд░реА рдирд╣реАрдВ рд╣реИ - рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдиреНрдпреВрдирддрдо рд╣реИрдВред

  • POSIX рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдареАрдХ рд╣реИред рдЗрд╕рдХреА рдХреБрдЫ рдмрд╣реБрдд рд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╕рдмрд╕реЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

    • ${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 рд╕рдорд╕реНрдпрд╛рдПрдВ рдорд┐рд▓реАрдВ:

  1. рдПрдХ рдкрд░реЗрд╢рд╛рди рдЪрд░ рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ - рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЗрд╕рдХрд╛ рдХреЛрдИ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ:

`` `

expandvars ( '$ {рд╕реЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛}')
'$ {рд╕реЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛}'
`` `

  1. рд╡рд┐рдХреГрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЗрд╕рдХрд╛ рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ:

`` `

expandvars ( '$ {рдЧреГрд╣')
'$ {рдЧреГрд╣'
`` `

рдЕрдм рддрдХ, https://github.com/docker/compose/pull/845 рд╣рдорд╛рд░реЗ рдирд┐рдХрдЯрддрдо рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд╣реВрдВ рдЬреЛ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЯреЗрдВрдкрд▓реЗрдЯ рдХрд░рдирд╛ рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рдХрд╛рдо рд╣реИ, рдФрд░ рд▓реЛрдЧ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреВрдЯреЗ рд╣реБрдП рд╕рд╛рдорд╛рдиреЛрдВ рдХреЛ рдбрд╛рд▓рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдордЬрдмреВрдд, рд╕рдЦреНрдд рдФрд░ рдЙрдкрдпреЛрдЧреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдореБрдХреНрдд рд╣реЛред рджреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ:

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

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

* рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреНрдпрд╛ рдХреЛрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреБрдВрдЬреА рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо _shouldn't_ рдкреНрд░рдХреНрд╖реЗрдк рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ?

kinenhancement kinfeature

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

рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ $PWD volumes , рдЗрд╕рд▓рд┐рдП рдЯреАрдо рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрд╡рд▓рдкрд░ рдЬрд╣рд╛рдВ рднреА рдФрд░ рдкрде рдЕрднреА рднреА рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдорд╛рдЙрдВрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рд╡рд╣рд╛рдВ рдПрдХ рд░реЗрдкреЛ рдХреНрд▓реЛрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

elasticsearch:
  image: zinvoice/elasticsearch
  volumes:
    - $PWD:/app

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

рдЖрдк рдЗрди рд╕реНрдерд╛рдкрд┐рдд 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_ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдХрдореНрдкреЛрдЬрд╝ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдлреЙрд░реНрдореЗрдЯ рджреЛрдиреЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдПрдХ рдПрдХрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рджреЛрдиреЛрдВ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреЗрдВрдкрд▓реЗрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рдмрд╛рдВрдзреЗрдВрдЧреЗред рдФрд░ рдХреЛрдИ рдпреБрдХреНрддрд┐ рдирд╣реАрдВред рдпрд╣ рдмрд╕ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред

@ рдЖрдирдВрдж рдХреБрдЫ рдиреЛрдЯ рдпрд╣рд╛рдБ:

  1. Jinja2 рдареЛрд╕ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде YAML рдХреЗ рдкреВрд░реНрд╡-рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рдорд┐рдирдЯ рд▓рдЧрддреЗ рд╣реИрдВ:

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)

  1. рдХреНрдпрд╛ рд╣рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдП? рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд╕рд╛рде рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ({{рдорд╛рди | рдбрд┐рдлрд╝реЙрд▓реНрдЯ ("рдбрд┐рдлрд╝реЙрд▓реНрдЯ")}})
  2. рдХреНрдпрд╛ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ YAML рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреЗрдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЬрд┐рдиреНрдЬрд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? рдЙрд╕реА рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдорд╛рдиреНрдп YAML рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рд╕рд░рд▓ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП - рдпрджрд┐ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рд╣реБрдИ рдереА рдпрд╛ рджреА рдЧрдИ рдереА рддреЛ рджрд┐рдП рдЧрдП рдЬрд┐рдВрдЬрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдФрд░ рд╡рд╛рдкрд╕реА рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
  3. рдпрджрд┐ рдЖрдк рдЬрд┐рдирдЬрд╛ 2 рдХреЛ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ - рддреЛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ {{рдЪрд░}} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрдо рд╕реЗ рдХрдо рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
  4. 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 } рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ

рдХрдорд┐рдпрд╛рдВ:

  • рдХреЛрдИ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдпрд╛ "рдЖрд╡рд╢реНрдпрдХ рдорд╛рди" рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд╣реАрдВред рдлрд┐рд░ рднреА, рд╣рдо рдмрд╛рдж рдореЗрдВ рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдЕрд╕реНрдерд╛рдпреА рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпреЛрдЧреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
  • рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХрд┐рд╕реА рднреА рдорд╢реАрди-рдкрдардиреАрдп рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рдВрдЯреИрдХреНрд╕ рддреНрд░реБрдЯрд┐ рдХрд╣рд╛рдБ рд╣реИ (рддреНрд░реБрдЯрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░ regex рдорд┐рд▓рд╛рди рдХреЗ рдмрд┐рдирд╛, рдпрд╣ рд╣реИ)ред
  • POSIX рд╕реЗ рднрд╛рдЧрдиреЗ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдЕрд▓рдЧ рд╣реИ: $$ рдХреЗ рдмрдЬрд╛рдп \$ ред

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднреЗрд╕ рдореЗрдВ рдПрдХ рдЖрд╢реАрд░реНрд╡рд╛рдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: 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 рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ env рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ рдХрд┐ рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдЬреЛ рджреЛ рдЬрдЧрд╣реЛрдВ рдкрд░ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рддреЛ рдпрд╣ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред # 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

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

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

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

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

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

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

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