Compose: рдХреНрдпрд╛ рдХрдВрдЯреЗрдирд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдХреЗ рд╕рд╛рде рдЖрд╢реНрд░рд┐рдд рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рджреЗрд░реА рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рдЕрдЧре░ 2014  ┬╖  314рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: docker/compose

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

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрд▓реНрдлреНрд░реЗрд╕реНрдХреЛ рдХрдВрдЯреЗрдирд░ рд╣реИ рдЬреЛ MySQL рдХрдВрдЯреЗрдирд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдлрд┐рд▓рд╣рд╛рд▓, рдЬрдм рдореИрдВ рдЕрдВрдЬреАрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдЕрд▓реНрдлреНрд░реЗрд╕реНрдХреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдЕрд▓реНрдлреНрд░реЗрд╕реНрдХреЛ рд╕реЗрд╡рд╛ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдЬрдм рд╡рд╣ MySQL рдХрдВрдЯреЗрдирд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ ... рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрднрд╡рддрдГ MySQL рд╕реЗрд╡рд╛ рдЕрднреА рднреА рдирд╣реАрдВ рд╕реБрди рд░рд╣реА рд╣реИред

рдХреНрдпрд╛ рдЕрдВрдЬреАрд░ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ?

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

рд╣рд╛рдБ, рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреБрдЫ рдХрд░рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреА - рдЗрд╕рдХрд╛ рдорддрд▓рдм рдкрд╣рд▓реЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдерд╛ред

рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рдкреНрд░рднрд╛рд╡ рдкреИрдЯрд░реНрди рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдареАрдХ рд╣реЛрдЧрд╛, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрдЧрд╛:

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

рдЗрд╕рд▓рд┐рдП, рдореЗрд░реА рдбреЙрдХ рдлрд╝рд╛рдЗрд▓ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

db:
  image: tutum/mysql:5.6

initdb:
  build: /path/to/db
  link:
    - db:db
  command: /usr/local/bin/init_db

app:
  link:
    - db:db
  wait:
    - initdb

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

рд╡реИрд╕реЗ рднреА рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВред

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

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

рд╣рдо рд░реИрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/dominionenterprise/tol-api-php/blob/master/tests/provisioning/set-env.sh

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

рдпрд╣ рдбреЙрдХрдЯрд░ рдХреЛ рд╣реА рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╕рдорд╛рдзрд╛рди рдПрдХ рд░рд╛рд╕реНрддрд╛ рд╣реИред рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЛ рддрдм рддрдХ рд╢реБрд░реВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рд▓рд┐рдВрдХ рдЦреБрд▓ рди рдЬрд╛рдПред

@ рдмрдлрд┐рд░рд╢ рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрддреНрдХреГрд╖реНрдЯ рд╣реЛрдЧрд╛ред

рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЛ рддрдм рддрдХ рд╢реБрд░реВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рд▓рд┐рдВрдХ рдЦреБрд▓ рди рдЬрд╛рдПред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЕрднреА рдХреЗ рд▓рд┐рдП, рдореИрдВ https://github.com/aanand/docker-wait рдкрд░ рдПрдХ рдмрджрд▓рд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛

рд╣рд╛рдБ, рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреБрдЫ рдХрд░рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреА - рдЗрд╕рдХрд╛ рдорддрд▓рдм рдкрд╣рд▓реЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдерд╛ред

рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рдкреНрд░рднрд╛рд╡ рдкреИрдЯрд░реНрди рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдареАрдХ рд╣реЛрдЧрд╛, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрдЧрд╛:

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

рдЗрд╕рд▓рд┐рдП, рдореЗрд░реА рдбреЙрдХ рдлрд╝рд╛рдЗрд▓ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

db:
  image: tutum/mysql:5.6

initdb:
  build: /path/to/db
  link:
    - db:db
  command: /usr/local/bin/init_db

app:
  link:
    - db:db
  wait:
    - initdb

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

рд╡реИрд╕реЗ рднреА рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВред

(рд╕рдВрд╢реЛрдзрд┐рдд, рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)

рдпрд╣рд╛рдВ рднреА +1ред рдпрд╣ рдмрд╣реБрдд рд╣реА рдЕрдкреАрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рдЖрджреЗрд╢реЛрдВ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред

рд╕рд╛рде рд╣реА +1ред рдмрд╕ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред рдорд╣рд╛рди рдЙрдкрдХрд░рдг btw, рдореЗрд░реЗ рдЬреАрд╡рди рдХреЛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ!

+1 рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

+1 рднреАред рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдПрдХ рд╣реА рд╕реЗрдЯ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛

+1 рднреАред dockerguys рд╕реЗ рдХреЛрдИ рдмрдпрд╛рди?

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

рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рдФрд░ рдкреНрд░рдпреЛрдЧ рдХреЗ рдмрд╛рдж рдореИрдВ рдЗрд╕рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред

рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЖрд╡реЗрджрди рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдПрдХ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИ
waforfor (рд╣реЛрд╕реНрдЯ, рдкреЛрд░реНрдЯ) рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдореБрдЭреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реЗрд╡рд╛рдУрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ (рдпрд╛ рддреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ
cli рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдиреНрдпрд╛рд╕)ред

рдЪрд┐рдпрд░реНрд╕
рдЬреЗрдореНрд╕

рдЬреЗрдореНрд╕ рдорд┐рд▓реНрд╕ / рдкреНрд░реЛрд▓реЛрдЧрд┐рдХ

E: [email protected]
рдбрдмреНрд▓реНрдпреВ: prologic.shortcircuit.net.au

рд╢реБрдХреНрд░ рдкрд░, 22 рдЕрдЧрд╕реНрдд 2014 рдХреЛ рд╢рд╛рдо 6:34 рдмрдЬреЗ, рдорд╛рд░реНрдХ рд╕реНрдЯреБрдЕрд░реНрдЯ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

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

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/docker/fig/issues/374#issuecomment -53036154

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

рдПрдХ рдФрд░ +1 рдпрд╣рд╛рдБред рдореИрдВ Django рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП Postgres рд╣реИ рддрд╛рдХрд┐ DB рд╣реИрдХрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИред

@ahknight рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, run рджреМрд░рд╛рди рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреНрдпреЛрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ?

рдХреНрдпрд╛ рдЖрдк build рдЪрд░рдг рдХреЗ рджреМрд░рд╛рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЗрд╕ рддрд░рд╣ рдЖрдк рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рддрд╛рдЬрд╛ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкреНрд░рд╢реНрди рдореЗрдВ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ, рдЕрдлрд╕реЛрд╕ред рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдЧреИрд░-рдбреАрдмреА рдХрд╛рд░реНрдп рдкрд╣рд▓реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдбреАрдмреА рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реВрдк рдореЗрдВ nc -w 1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдлрд┐рд░ рдбреАрдмреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рдЧрдВрджрд╛ (рдПрд░) рдорд╣рд╕реВрд╕ рдХрд░рд╛рддрд╛ рд╣реИред

рдореБрдЭреЗ fig build рдЪрд░рдг рдХреЗ рджреМрд░рд╛рди рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдлрд▓рддрд╛ рдорд┐рд▓реА рд╣реИред рдореИрдВ рдПрдХ django рдкрд░рд┐рдпреЛрдЬрдирд╛ (рдЕрднреА рднреА рдкреНрд░рдЧрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдХрд╛рдо) рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ: https://github.com/dnephin/readthedocs.org/blob/fig-demo/dockerfiles/database-Dockerfile#L21

рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореИрдВрдиреЗ mysql рдХреЗ рд╕рд╛рде рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ рд╣реИ, рдЬрд╣рд╛рдБ рдореБрдЭреЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛рд╡ рдХрд░рдирд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ mysqld init рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣реА рдереАред рдпрд╣ рдЗрдирдЧрд┐рдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд▓рдЧрддреА рд╣реИред

рдпрд╣рд╛рдБ рдореИрдВ рдХреНрдпрд╛ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛:

Docker / docker # 7445 рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдЕрдВрдЬреАрд░ рдореЗрдВ рдЗрд╕ "wa_for_helth_check" рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рддреЛ рдпрд╣ рдПрдХ рдбреЙрдХ рдирд╣реАрдВ рдореБрджреНрджрд╛ рд╣реЛрдЧрд╛?

рд╡рд╣рд╛рдБ рд╡реИрд╕реЗ рднреА рдЬреБрдбрд╝рд╛ рдХрдВрдЯреЗрдирд░ рдкрд░ tcp рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрдЬреАрд░ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ, рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИред =)

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

@docteurklein рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдКрдкрд░ рд╕реЗ рд▓рд┐рдВрдХ рддрдп рдХрд┐рдпрд╛ (https://github.com/dnephin/readthedocs.org/blob/fig-demo/dockerfiles/database/Dockerfile#L21)

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

  1. рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░реЗрдВ
  2. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдбреЗрдЯрд╛рдмреЗрд╕, рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ рд╕реНрдерд┐рд░рддрд╛ рдбреЗрдЯрд╛ рдмрдирд╛рдПрдБ
  3. рд╕реЗрд╡рд╛ рдмрдВрдж рдХрд░реЗрдВ

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

рдЕрдЪреНрдЫрд╛! рдзрдиреНрдпрд╡рд╛рдж :)

@dnephin рдЕрдЪреНрдЫрд╛, рдРрд╕рд╛ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ред

+1 рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдПрдХ рдмрджрд╕реВрд░рдд рд╕рдордп рджреЗрд░реА рд╣реИрдХ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдПрдХ _real_ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпреЛрдВ / рдХрдм рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдореЗрд░реЗ рдкрд╛рд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕ рдЦреЛрдЬ рд╕рд░реНрд╡рд░ рд╣реИ рдФрд░ рдлрд┐рд░ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рд╣реИ рдЬреЛ рдПрд▓рд┐рдЯрд┐рдХреНрд╕ рдЦреЛрдЬ рд╕реЗ рдЬреБрдбрд╝ рд░рд╣рд╛ рд╣реИред рдЗрд▓рд╛рд╕реНрдЯрд┐рд╕рд░реНрдЪ рдХреЛ рд╕реНрдкрд┐рди рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ fig up -d рдХреНрдпреЛрдВрдХрд┐ рдПрд▓рд┐рд╕реНрдЯрд┐рдХреНрд╕ рдЦреЛрдЬ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рддреБрд░рдВрдд рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдХрдВрдЯреЗрдирд░ MySQL рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░рд╛ рдПрдХ рдРрдк рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ MySQL рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рджреВрд╕рд░рд╛ рдРрдк рддреЗрдЬреА рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрд╖рдгрд┐рдХ fig up рдЕрд╕рдлрд▓рддрд╛рдПрдБ рд╣реИрдВред

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

@oskarhane рдХреЛ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдпрд╣ "5 рд╕реЗрдХрдВрдб рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ" рдорджрдж рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдзрд┐рдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ (рдпрд╛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ 5 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛) ... рдпрд╣ рдмрд╣реБрдд рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ рд╕рдордп рдХреЗ рдЗрдВрддрдЬрд╛рд░ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░реЗрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЗрд╕ рдкреНрд░рддреАрдХреНрд╖рд╛ рдФрд░ рджреВрд╕рд░реЗ рд╕рдореВрд╣ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдпрд╣ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд▓рдВрдЧрдбрд╝рд╛ рд╣реИ, рдЕрдВрдЬреАрд░ рдХреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП / =

@oskarhane , @dacort , @ddossot : рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдЪреАрдЬреЗрдВ рдХреНрд░реИрд╢ рдФрд░ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рд╣реЛрддреА рд╣реИрдВ, рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рдЖрддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдЖрджрд┐ рдЪрд╛рд╣реЗ рдЕрдВрдЬреАрд░ рдЯреАрд╕реАрдкреА рд╕реЙрдХреЗрдЯ рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЖрдкрдХреЗ рдХрдВрдЯреЗрдирд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд▓рдЪреАрд▓рд╛ред рдЗрд╕ рддрд░рд╣ рд╡реЗ рд╣рд░ рдЬрдЧрд╣ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред

рдЖрдк рд╕рд╣реА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рд╣рдо рд╕рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореМрдЬреВрджрд╛ рдРрдк рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрд╕рд╛рдзрдиреЛрдВ (рдЬреИрд╕реЗ DB) рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ (рдЬреЛ рдХрд┐ рдПрдХ рдорд╣рд╛рди рдмрд╛рдд рд╣реИ тДв) рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдлреНрд░реЗрдорд╡рд░реНрдХ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╢рд╛рдпрдж рд╣реА рдХрднреА рдареАрдХ рд╣реЛ рдЬрд╛рдП, рдЬреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред fig start рдмрдЬрд╛рдп рджреЗрд░реА рдХреЗ рд╕рд╛рде, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреНрд░рдо рдореЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП fig up ред

рдореИрдВ рдПрдХ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдБ рдЬреЛ рдЕрдВрдЬреАрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖ рд░рд╣реА рд╣реИ: рдкрд▓рдХ:

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

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХреА рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рдЬреБрдбрд╝реЗ рдХреБрдЫ рдХреЛрдб рдореЗрдВ рдпрд╣ рдХрд┐рдпрд╛ рдерд╛:

while ! exec 6<>/dev/tcp/${MONGO_1_PORT_27017_TCP_ADDR}/${MONGO_1_PORT_27017_TCP_PORT}; do
    echo "$(date) - still trying to connect to mongo at ${TESTING_MONGO_URL}"
    sleep 1
done

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЛрдИ /dev/tcp рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ Linux рдбрд┐рд╕реНрдЯреНрд░реЛ (?) рд╣реИ - рдореИрдВ рдЙрдмрдВрдЯреВ рдореЗрдВ рд╣реВрдБ

рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рдмрдЬрд╛рдп рдкрд╛рдпрд╛ рдЬреЛ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ:

until nc -z postgres 5432; do
    echo "$(date) - waiting for postgres..."
    sleep 1
done

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

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

рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ?

@anentropic Docker рд▓рд┐рдВрдХ рдПрдХ рддрд░рдлрд╝рд╛ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдбрд╛рдЙрдирд╕реНрдЯреНрд░реАрдо рдХрдВрдЯреЗрдирд░ рд╕реЗ рдорддрджрд╛рди рдХрд░рдирд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИред

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдБ рдкреЛрд░реНрдЯ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬреЛ nc рдХреЛ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдорд╛рдВрдб рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ?

рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ рдкрддрд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХреЗ рд▓рд┐рдП рд╕рдЪ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдЬреЛ рдХрд┐ рдЕрдВрдЬреАрд░ рдореЗрдВ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рддрд░реНрдХ рд╣реИред

@рдЖрдирдВрдж рдореИрдВрдиреЗ рдЖрдкрдХреЗ

рдореБрдЭреЗ рдЙрдореНрдореАрдж рдереА рдХрд┐ рдУрд░рд┐рдПрдВрдЯрдбрдм рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрдВрдЯреЗрдирд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореИрдВ рдЕрднреА рднреА рдЗрд╕реЗ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣рд╛рдБ рдореЗрд░рд╛ рд╕реЗрдЯрдЕрдк рд╣реИ (рдбреЙрдХ рд╡рд░реНрдЬрди рез.рек.рез, рдПрдХ Ubuntu резрек.режрек рдмреЙрдХреНрд╕ рдкрд░ резреж:рейреж):

orientdb:
    build: ./Docker/orientdb
    ports:
        -   "2424:2424"
        -   "2480:2480"
wait:
    build: ./Docker/wait
    links:
        - orientdb:orientdb
....
core:
    build:  ./Docker/core
    ports:
        -   "3000:3000"
    links:
        -   orientdb:orientdb
        -   nsqd:nsqd

рдХрд┐рд╕реА рднреА рдорджрдж рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рд╣реИред рдзрдиреНрдпрд╡рд╛рджред

@mindnuts wait рдЫрд╡рд┐ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЕрдзрд┐рдХ рд╣реИ; рдпрд╣ fig.yml рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред рдЖрдк рдЕрдкрдиреЗ рдореЗрдВ рдЙрд╕реА рддрдХрдиреАрдХ (рдмрд╛рд░-рдмрд╛рд░ рдорддрджрд╛рди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП core рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХрдВрдЯреЗрдирд░ orientdb рдХрдВрдЯреЗрдирд░ рдореБрдЦреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдВрдж рд▓рд╛рдд рд╕реЗ рдкрд╣рд▓реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

+1 рдиреЗ рдЕрднреА рдЗрд╕рдореЗрдВ рднрд╛рдЧ рд▓реЗрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдХрд╕реНрдЯрдо рдирд┐рд░реНрдорд┐рдд рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЦреАрдВрдЪ рд░рд╣рд╛ рд╣реВрдВред рдЙрдиреНрд╣реЗрдВ рдЕрдВрдЬреАрд░ рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдиреЛрдб рдРрдк рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореЛрдВрдЧреЛрдбрдм рдЕрднреА рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ ...

рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдпрд╣ рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЗрдВ рдШрдВрдЯреЛрдВ рдмрд┐рддрд╛рдП рдХрд┐ рдХреНрдпреЛрдВ рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп MySQL рдкрд╣реБрдВрдЪ рд░рд╣рд╛ рдерд╛, рдФрд░ рдпрд╣ рдЕрдВрдЬреАрд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдСрдлрд╝рд▓рд╛рдЗрди рдХреНрдпреЛрдВ рдерд╛ред рдХреЗрд╡рд▓ рдЕрдм рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдЬрдм рднреА рдореИрдВ рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ Fig рд╣рдореЗрд╢рд╛ MySQL рдХрдВрдЯреЗрдирд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ред рдЕрднреА рддрдХ MySQL рд╕реЗ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛ рдкрд╛ рд░рд╣рд╛ рд╣реИред

рдореИрдВрдиреЗ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдУрд╡рд░рд░рд╛рдЗрдб рдХреА рдЧрдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдмрд┐рдВрджреБ рдХреЛ рдЬреЛрдбрд╝рд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 5 рд╕реЗрдХрдВрдб рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдЧрд░ рдбреЙрдХрд░ / рдЕрдВрдЬреАрд░ рдХреЗ рд╕рд╛рде рдПрдХ MySQL + рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдХрдВрдЯреЗрдирд░ рд╕рдВрдпреЛрдЬрди рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕рд▓рд┐рдП WordPress entrypoint.sh рдХреА рдореГрддреНрдпреБ рдЕрднреА рддрдХ MySQL рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рд╛рде рдПрдХ рдореБрджреНрджрд╛ рд╣реИред

рдЬрдмрдХрд┐ рдореИрдВ рд╢реБрд░реВ рдореЗрдВ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдкреНрд░рд╢рдВрд╕рдХ рдерд╛, https://github.com/docker/docker/issues/7445#issuecomment -56391294 рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдЧрд▓рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реЛрдЧреА, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреБрд░реА рдкреНрд░рдерд╛рдУрдВ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреА рд╣реИред

рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рджреЛ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

рдХреБрдЫ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗрд╡рд╛ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдХрд┐рд╕реА рднреА рдХрдВрдЯреЗрдирд░ рдЖрд░рдВрднреАрдХрд░рдг рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ build рджреМрд░рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рддрд░рд╣ рдпрд╣ рдХреИрд╢ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдХрд╛рдо рдХреЛ рдЫрд╡рд┐ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗрд╡рд╛ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рд╛ рдЬрд╛ рд╕рдХреЗ

рдЖрд╡реЗрджрди рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд▓рдЪреАрд▓рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╡рд╛рдкрд╕ рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдПред

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

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

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

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╕рд┐рд░реНрдл _restart_ рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ _destroys рдФрд░ рдЗрдиреНрд╣реЗрдВ рдкреБрдирдГ рдмрдирд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ fig.yml рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХрд╛ рд╣реИред рд╣рдореЗрдВ рдЕрдВрддрдд: рдПрдХ рд╣реЛрд╢рд┐рдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ "рд╡рд░реНрддрдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди" рдХреА рддреБрд▓рдирд╛ "рд╡рд╛рдВрдЫрд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди" рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рд╡рд╣реА рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред

рдореВрд▓ рдореБрджреНрджреЗ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдВрдЯреЗрдирд░реЛрдВ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рддрд░реНрдХ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдирд╛ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реИ - рдпрд╣ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрд▓рд┐рдХ рд╣реИ рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп (рдпрд╛ рднрд╛рд╖рд╛-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ рдпрджрд┐ рдЖрдк рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ) рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢реАрд░реНрд╖ рдкрд░ waitfor db рдХрд░ рд╕рдХрддреА рд╣реИред

@kennu --no-recreate рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? / cc @aanand

@ рдирд╛рдирдВрдж рдХрд╛ рдорддрд▓рдм рдерд╛ рдХрд┐

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

рд▓реЗрдХрд┐рди рдкреБрдирд░рд╛рд░рдВрдн рдиреАрддрд┐ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдЕрдиреНрдпрдерд╛ рд▓реЛрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдШрдВрдЯреЛрдВ рдмрд┐рддрд╛рддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ рдореИрдВрдиреЗ рдЕрднреА рдХрд┐рдпрд╛ рдерд╛)ред рдлрд▓реА рдХреЗ рд▓рд┐рдП RestartPolicyAlways рдХреЛ рдПрдЧ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдбрд┐рдлреЙрд▓реНрдЯ рдХрд░рддрд╛ рд╣реИред

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

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

рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдбреЙрдХрдЯрд░ рдпрд╛ рдЕрдВрдЬреАрд░ рдХреЗ рдХрд╛рд░рдг рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЧрд┐рд░рд╛рдП рдЧрдП рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд▓рдЪреАрд▓рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдирд╣реАрдВ рд╣реИ ред рдХрд┐рд╕реА рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рддрд░рд╣ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

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

рд╕рдорд╕реНрдпрд╛ рдХреНрд░рдо рдореЗрдВ рд╣реИ [рдЕрдВрдЬреАрд░] рдмрд╛рддреЗрдВ рдХрд░рддрд╛ рд╣реИ

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

рдореБрдЭреЗ рдпрд╣рд╛рдВ @dnephin рд╕реЗ рд╕рд╣рдордд

рдХрдореНрдкреЛрдЬрд╝ / рдЕрдВрдЬреАрд░ рдпреЗ рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рд▓реЗ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдирд┐рдЧрд░рд╛рдиреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐

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

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

рдирд┐рдЬреА рддреМрд░ рдкрд░, рдореИрдВ рдЕрдВрдЬреАрд░ рдСрдЯреЛрдбреЗрдХреНрдЯ рдмрдирд╛рдХрд░, рдЬреЛ рдХрдВрдЯреЗрдирд░ рдкреЛрд░реНрдЯ рдПрдХ рд▓рд┐рдВрдХреНрдб рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рд╣реИрдВ, рд▓рд┐рдВрдХ рдХрдВрдЯреЗрдирд░ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрд┐рдВрдЧ рдХрд░рдХреЗ (рдПрдХ рд╕рдордп рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде), рдФрд░ рдЕрдВрддрддрдГ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб / рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реВрдВред

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

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

рдРрд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдЕрдЧрд░ рдЙрд╕реЗ "рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрднреА рддрдХ рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ" рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реИ

рдХрдореНрдкреЛрдЬрд╝ / рдЕрдВрдЬреАрд░ рд╡рд╣рд╛рдБ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдореЗрдВ рдЪрд▓реЗрдЧрд╛; MySQL рдЕрдк рд╣реЛрдиреЗ рдкрд░ рдХреИрд╕реЗ рдЬрд╛рдВрдЪреЗрдВ, рдФрд░ _accepting_ рдХрдиреЗрдХреНрд╢рди? (рдФрд░ PostgreSQL, рдФрд░ (_ рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдпрд╣рд╛рдБ_) рджрд░реНрдЬ рдХрд░реЗрдВ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, _where_ рдХреЛ "рдкрд┐рдВрдЧ" рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдЖрдк рд╣реЛрд╕реНрдЯ рд╕реЗ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдЫрд╡рд┐ рдореЗрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ рд╢рд╛рдорд┐рд▓ рд╣реИ рдХрд┐ рдХреНрдпрд╛ MySQL docker-entrypoint.sh рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ?

@thaJeztah "MySQL рдХрдиреЗрдХреНрд╢рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП PHP рдореЗрдВ рдХреБрдЫ рд╕рд░рд▓ рдкреБрдирд░реНрдкреНрд░рдпрд╛рд╕ рддрд░реНрдХ рдЬреЛрдбрд╝реЗрдВ" tianon рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд┐рдд 2 рджрд┐рди - рдирд╛рдЗрд╕ред :-) рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдпрд╣ рд╕рдм рдХреЗ рдмрд╛рдж рдПрдХ рдорд╛рдирдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрди рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рдореЗрд░реА рд╢рдВрдХрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреБрди: рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рднреА рдЫрд╡рд┐ рд▓реЗрдЦрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдкреЛрд░реНрдЯ рдкрд┐рдВрдЧрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ - рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рдХрд┐ рдЗрд╖реНрдЯрддрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ECONNREFUSED рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд▓рд┐рдВрдХреНрдб рдХрдВрдЯреЗрдирд░ рд╕реЗ рдкреБрди: рд╕рд░рд▓ рдХрдиреЗрдХреНрд╢рди рдХреА рдЬрд╛рдБрдЪ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЬреЛ рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ 80% (рдпрд╛ рд╕рдВрднрд╡рддрдГ 99%) рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╣рд░ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдпрдВ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

@kennu рдЖрд╣! рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдЕрднреА рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рдкрддрд╛ рдирд╣реАрдВ рдерд╛, рдмрд╕ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЗ рдХрд╛рд░рдг рдЕрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЬрд╛рдБрдЪ рдХреАред

рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдЖ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЖрдк рдЬреЛ рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ Compose / Fig рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рдл рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рдЬреЛ рд╕рднреА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдФрд░ рдордЬрд╝рдмреВрддреА рд╕реЗ)ред рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдХрдИ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЗрди рдореБрджреНрджреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП "рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрд╛рдп" рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Compose / Fig рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╣реИред

рдКрдкрд░ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ; I _do_ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдбреЙрдХрдлреЗрд░реАрд▓ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реЛрдЧреАред

рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдЧрд░реВрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕реЗрд╡рд╛ "рдЖрдЙрдЯреЗрдЬ" рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдПред рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП @dnephin (рдФрд░ рд╕рдВрднрд╡рддрдГ рдЕрдиреНрдп рд╕реНрд░реЛрддреЛрдВ) рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ

рдореИрдВ рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдФрд░ @kennu рдХреЗ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ

Personally, I would make Things Just Work, by making Fig autodetect which container ports are exposed to a linked container, ping them before starting the linked container (with a sane timeout), and ultimately provide a configuration setting to override/disable this functionality.

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛, рдЬреИрд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рдЬрдм рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдореЛрдВрдЧреЛрдбрдм рдХрдВрдЯреЗрдирд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ @soupdiver рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред рдореБрдЭреЗ рдПрдХ рдореЛрдВрдЧреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХрд░рдиреЗ рдореЗрдВ рднреА рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд░рд╣реА рд╣реИ, рдФрд░ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдПрдХ start.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╣реБрдд рдЧрддрд┐рд╢реАрд▓ рдирд╣реАрдВ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЕрдкрдиреЗ рд░реЗрдкреЛ рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ Dockerfile рдФрд░ docker-compose.yml рдореЗрд░реЗ рдиреЛрдб рд░реЗрдкреЛ рдореЗрдВ)ред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рд╕рд┐рд░реНрдл рдореЗрдХ рдЗрдЯ рд╡рд░реНрдХ рд╣реЛ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЖрд╕рд╛рди рд╣реИ рдЬреИрд╕реЗ рдПрдХ рд╡реЗрдЯ рдЯрд╛рдЗрдорд░ рдЗрд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдирд╣реАрдВ рдХрд╛рдЯреЗрдЧрд╛ред

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

рдХреНрдпрд╛ рдбреЛрдХрд░ рдпрд╛ рдЕрдВрдЬреАрд░ рдЗрди рдЪреЗрдХреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ?

рдХреНрдпрд╛ рдбреЛрдХрд░ рдпрд╛ рдЕрдВрдЬреАрд░ рдЗрди рдЪреЗрдХреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ?

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: _no_ред рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ;

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

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

рдирд╣реАрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВред

рдЕрдВрдЬреАрд░ / рд░рдЪрдирд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рдХрд┐ рдХреИрд╕реЗ рдХрд░реЗрдВред

рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВред рдореИрдВ рдЕрдВрдЬреАрд░ рдпрд╛ рдбреЙрдХрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛, рдЗрд╕реЗ рдХреИрд╕реЗ рдЬрд╛рдВрдЪреЗрдВ, рдЬреИрд╕реЗред

web:
    image: nginx
    link: db
db:
   is_available: "curl DB_TCP_ADDR:DB_TCP_PORT"

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

рдЯреЗрд▓рдиреЗрдЯ рдХрдорд╛рдВрдб рдХреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдирд╣реАрдВ, рдбреЙрдХрдЯрд░-рд╣реЛрд╕реНрдЯ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рддрдм curl рдпрд╛ <name a tool that's needed> рдХреЛ рд╣реЛрд╕реНрдЯ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╕реБрд░рдХреНрд╖рд╛ рдореБрджреНрджрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдордЬрд╛рдХрд┐рдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ is_available: "rm -rf /" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, _host_ рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рд╕реЗ рднреА рд╕реБрд▓рдн рд╣реИред

рд▓реЗрдХрд┐рди рдореИрдВ рд╕рд┐рд░реНрдл рдЬреЛрд░ рд╕реЗ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ, ...

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

@thaJeztah рдореИрдВ

рдореИрдВ рдПрдХ рд╕реБрдЭрд╛рд╡ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдерд╛: рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ рдпрджрд┐ рдореИрдВ рдЕрдВрдЬреАрд░ рдореЗрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ "рдЗрд╕ рдХрдВрдЯреЗрдирд░ рдХреЛ рдЗрд╕ рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░ рдХреЛ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ"ред

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

рдореИрдВ рдЗрд╕реЗ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реВрдВрдЧрд╛:

"" "
рдПрдкреНрд▓рд┐рдХреЗрд╢рди:
рд▓рд┐рдВрдХ:
- рдбреАрдмреА: рдбреАрдмреА
prereqs:
- рд░реВрдардиреЗ рдХреА рдХреНрд░рд┐рдпрд╛

runthisfirst:
рд▓рд┐рдВрдХ:
- рдбреАрдмреА: рдбреАрдмреА
"" "

runthisfirst рдореЗрдВ рдПрдХ рд▓рд┐рдВрдХ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХреНрд╕реЗрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдРрдк рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдЪрд▓реЗрдЧрд╛ рдЬрдм рд░рдирдерд┐рд╕рд┐рд╕реНрдЯреНрд░реЗрдЯреНрд╕ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЧрдпрд╛ рд╣реИ (рдмреЛрдирд╕ рдЕрдВрдХ рдпрджрд┐ рд░рдирдереНрд░рд┐рд╕реНрдкрд╕реНрдЯ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ рд╣реИ)ред

рдХреНрдпрд╛ рдпрд╣ рдЙрддреНрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрднрд╡ рд╣реИ?

KJL

10 рдлрд░рд╡рд░реА 2015 рдХреЛ, 05:28 рдкрд░, рдЯреЛрдмрд┐рдпрд╛рд╕ рдордВрдХ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

@thaJeztah https://github.com/thaJeztah рдореИрдВ рдЖрдкрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдБред рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХреЛрдИ 100% рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub https://github.com/docker/fig/issues/374#issuecomment -73561930 рдкрд░

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

db:
  image: tutum/mysql:5.6
  sleep: 10
app:
  link:
    - db:db

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЗрд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред

рдХ) рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЧрд▓рдд рдЬрдЧрд╣ рд╣реИ
рдмреА) рдЖрдк рдХрдм рддрдХ рд╕реЛрддреЗ рд╣реИрдВ?
рдЧ) рдпрджрд┐ рдЯрд╛рдЗрдордЖрдЙрдЯ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

рд╕реНрдкрд╖реНрдЯ рдореБрджреНрджреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рд▓рдЧрддрд╛
рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рдЗрд╕ рдмрд╛рдд рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрд╡реЗрджрди рдХреНрдпрд╛ рд╣реИ
рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред IHMO рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реЛрдирд╛ рд▓рд┐рдЦрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдЕрдзрд┐рдХ рд╕рд╣рд┐рд╖реНрдгреБ рдФрд░ / рдпрд╛ рд╣реЛрд╢рд┐рдпрд╛рд░ рдпрд╣ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред

рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдореМрдЬреВрджрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдФрд░ рд╡рд┐рд░рд╛рд╕рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ
рдХреБрдЫ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА - рд▓реЗрдХрд┐рди рдпрд╣ рд╢рд╛рдпрдж рдЕрдзрд┐рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдХреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ:

рдПрдХ docker-compose.yml :

db:
  image: tutum/mysql:5.6
app:
  wait: db
  link:
    - db:db

рдЬрд╣рд╛рдВ wait рд▓рд┐рдП db рдкрд░ "рдЙрдЬрд╛рдЧрд░" рд╕реЗрд╡рд╛рдУрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдпрд╣ рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ?

рд╕рд░рд▓рддрдо рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЖрдк рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдЖрдк рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд╣реАрдВ рдЦреЛрд▓ рд╕рдХрддреЗ
рдЙрдЬрд╛рдЧрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ tcp рдпрд╛ udp рдХрдиреЗрдХреНрд╢рдиред

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

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

рдмреЗрд╢рдХ рд╣рдо рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡рд░ рдпрд╛ рдЕрдиреНрдп рд╕рд╛рдзрди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдХрдВрдЯреЗрдирд░ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдердХрд╛рдК рд╣реИред

@aandand I _almost_ рдиреЗ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдкрдХреЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдХреБрдЫ рдХрд╛рдо рдХрд┐рдпрд╛ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рд░рди рдФрд░ рдбреЙрдХрд░ рд░рди рдХреЗ рдмреАрдЪ рдХреБрдЫ рдФрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдкреВрд░реНрд╡ рдореЗрдВ рд▓рдЯрдХрд╛ рд╣реБрдЖ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдмрд╛рдж рдореЗрдВ рдПрдХ рдЖрдХрд░реНрд╖рдг рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг docker-compose.yml:

db:
  image: postgres
  ports:
    - "5432"
es:
  image: dockerfile/elasticsearch
  ports:
    - "9200"
wait:
  image: n3llyb0y/wait
  environment:
    PORTS: "5432 9200"
  links:
    - es
    - db

рддрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ ...

docker-compose run wait

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╣реЛрдирд╛ рдирд╣реАрдВ рд╣реИред рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реЗрд╡рд╛рдПрдБ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВ (рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рд╡рд░реНрдЪреБрдЕрд▓рдмреЙрдХреНрд╕ env рдХреЗ рднреАрддрд░ред рдореБрдЭреЗ nc рд▓реВрдк рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рд╣рдореЗрдВ рддрдм рдПрдХ рд╣реА рдмрд┐рдВрджреА рдорд┐рд▓рддреА рд╣реИ ... рдХреБрдЫ рднреА рдирд╣реАрдВ)ред

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

docker run -e PORTS="5432 9200" --links service_db_1:wait1 --links service_es_1:wait2 n3llyb0y/wait

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ docker-compose run рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм docker-compose run рдХрд╛ рдЯреБрдХрдбрд╛ рдЭрдВрдбрд╛ -d рдЖрдкрдХреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрдВрдЯреЗрдирд░ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдИ рдкреНрд░рддреАрдХреНрд╖рд╛ рд▓рд╛рдн рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ (рдЗрд╕ рд╕рдордп рдореЗрдВ) рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реЛрддреА рд╣реИ рдЕрдиреНрдп рдЧреИрд░-рдкреГрд╖реНрдарднреВрдорд┐ рд╡рд╛рд▓реА рд╕реЗрд╡рд╛рдУрдВ рдкрд░ рд░реЛрдХ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдореИрдВ рдХрд░реАрдм рд╕реЗ рджреЗрдЦрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ

рдереЛрдбрд╝рд╛ рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рдж рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдпрд╣ рд╕рд┐рд░реНрдл рдмрд┐рдЬреАрдмреЙрдХреНрд╕ рдмреЗрд╕ рдореЗрдВ рдПрдХ рдиреЗрдЯрдХрд╛рдЯ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг @aanand рдЗрдВрддрдЬрд╛рд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдбреЛрдХрд░-рд▓рд┐рдЦреЗрдВ 1.1.0 рдХреЗ рдЦрд┐рд▓рд╛рдл рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ docker-compose run <util label> рдХреЗ рдмрдЬрд╛рдп docker-compose up ред рд▓рд┐рдВрдХ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд╛ рдЙрджрд╛рд╣рд░рдгред

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

рдЖрдк рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдореБрдЭреЗ рдмрддрд╛рдУред

рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рдореБрджреНрджрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдХрд┐ рдПрдХ рдХрдВрдЯреЗрдирд░ рдПрдХ рдФрд░ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рддреИрдпрд╛рд░ рди рд╣реЛ рдЬрд╛рдПред рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рд╣рд░ рдХреЛрдИ рдХрд╣рддрд╛ рд╣реИ, рддреИрдпрд╛рд░ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ MySQL рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реИ, рдПрдХ рдЕрдиреНрдп рдЬреЛ рдЗрд╕рдХреЗ рдмреИрдХрдЕрдк рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдкреНрд░рднрд╛рд░реА рд╣реИ, рдФрд░ рдлрд┐рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдРрдк рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЗ рдЙрдЬрд╛рдЧрд░ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдкрд╣рд▓реЗ mysql рдХрдВрдЯреЗрдирд░ рдХреЛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдлрд┐рд░ рдмрд╛рдХреА рддрдм рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рддрдХ mysql рд╕реЗрд╡рд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рди рд╣реЛ, рдкрд╣рд▓реЗ рдирд╣реАрдВред рдЗрд╕реЗ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ docker exec рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд░рд┐рдмреВрдЯ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ, рдЫрджреНрдо рдХреЛрдб рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛:

run mysql
waitUntil "docker exec -t mysql mysql -u root -prootpass database -e \"show tables\""
run mysql-backup
waitUntil "docker exec -t mysql mysql -u root -prootpass database -e \"describe my_table\""
run web1
waitUntil "dexec web1 curl localhost:9000 | grep '<h1>Home</h1>'"
run web2
waitUntil "dexec web2 curl localhost:9000 | grep '<h1>Home</h1>'"
run nginx

рдЬрд╣рд╛рдВ waitUntil рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд▓реВрдк рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ docker exec тАж рдХрдорд╛рдВрдб рдХреЛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ рдФрд░ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдПрдЧреНрдЬрд╝рд┐рдЯ рдХреЛрдб 0 рд╣реИред

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

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

mysql:
  image: mysql
  ...
mysql-backup:
  links:
   - mysql
  wait_until:
   - mysql: mysql -u root -prootpass database -e "show tables"
  ...
web1:
  links:
   - mysql
  wait_until:
   - mysql: mysql -u root -prootpass database -e "describe my_table"
  ...
web2:
  links:
   - mysql
  wait_until:
   - mysql: mysql -u root -prootpass database -e "describe my_table"
  ...
nginx:
  links:
   - web1
   - web2
  wait_until:
   - web1: curl localhost:9000 | grep '<h1>Home</h1>'
   - web2: curl localhost:9000 | grep '<h1>Home</h1>'
  ...

Wha рдпрд╣ рдмрдВрджрд░рдЧрд╛рд╣ рдХреА рддрд░рд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдИрдЯ рдирд╣реАрдВ рд╣реИ?
http://docs.azk.io/en/azkfilejs/wait.html#

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

AWS CloudFormation рдХреЗ WaitCondition рдЬреИрд╕рд╛ рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-waitcondition.html

+1, рдореЗрд░реЗ Rails рдРрдкреНрд╕ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП Docker рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рдЖ рд░рд╣реА рд╣реИ рдЬреЛ MySQL рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ

+1 рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдореБрджреНрджрд╛ рднреА рд╣реИред рдореБрдЭреЗ @adrianhurt рдЖрдЗрдбрд┐рдпрд╛ рдкрд╕рдВрдж рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд░реНрдд рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрдВрддрдЬрд╛рд░ рдкреВрд░рд╛ рд╣реБрдЖ рд╣реИред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рдШреЛрд╖рдгрд╛рддреНрдордХ yml рд╣реИ, рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ "рддреИрдпрд╛рд░" рдХреА рдордирдорд╛рдиреА рдкрд░рд┐рднрд╛рд╖рд╛ рдирд╣реАрдВ рд╣реИред

+1

рдореИрдВрдиреЗ рдЗрд╕ рдЯреИрдм рдХреЛ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд░рдЦрд╛ рд╣реИ: http://crosbymichael.com/docker-events.html ... рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд▓рдЧрддрд╛ рд╣реИ

+1

рд╕рд░рд▓ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд▓рд┐рдП +1

рддреИрдпрд╛рд░ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП +1

+1

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

рдмрд╕ рдЖрдкрдХреЛ рдпрд╣ рдЕрдВрджрд╛рдЬрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ MySQL + PHP рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдХреЛрдб рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Igorw / рд░рд┐рдЯреНрд░реА рд╕реЗ :)

рдЪреВрдВрдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИ, рдЪреАрдЬреЛрдВ рдХреЛ рд╣рдореЗрд╢рд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдореИрдВ рд╕рд╣реА рд╣реВ? рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрдм рд╡реЗ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рд╣реИред

+1

@ schmunk42 рдЕрдЪреНрдЫрд╛ рд╕рд╛рдорд╛рди - рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рд╣реИ рдХрд┐ рдпрд╣ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдПрдХ рдЖрджрд░реНрд╢ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗрдЯрдЕрдк рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рджреЛрдиреЛрдВ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред

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

+1, рдХрдо рд╕реЗ рдХрдо рдХрдВрдЯреЗрдирд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рджреЗрд░реА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

+1

рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ рдЬрдм рдЖрдк рдЙрди рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рдХреЛрдб рдирд╣реАрдВ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХреЛрдИ рд╕реЗрд╡рд╛ Service рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ InfluxDB ред Services рд▓рд┐рдП InfluxDB Services рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ InfluxDB рдореЗрдВ рдПрдХ рдзреАрдорд╛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╣реЛрддрд╛ рд╣реИред

InfluxDB рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдкреЛрдЬрд╝ рдХреИрд╕реЗ рддреИрдпрд╛рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ?

рдореИрдВ рдХреЛрдб рд╣реИ рдореЗрд░рд╛, рдореИрдВ рдЗрд╕реЗ рдПрдХ рд░рд┐рдЯреНрд░реА рдбрд╛рд▓ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рддреАрд╕рд░реЗ рдРрдк рдХреЗ рд▓рд┐рдП рдореИрдВ рдХреЛрдб рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддрд╛ред

@robsonpeixoto рдиреЗрдЯрдХрдЯ рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХреЗ рддрд░реАрдХреЛрдВ рд╕реЗ рдЗрд╕ рдЯрд┐рдХрдЯ рдореЗрдВ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рдЖрдк рдПрдХ рдЕрдиреНрдп рдЯрд┐рдХрдЯ рдореЗрдВ рдореЗрд░реЗ MySQL рдЙрджрд╛рд╣рд░рдг рдкрд░ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/docker/docker/issues/7445#issuecomment -101523662

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рддрддреНрдкрд░рддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреА рд╡реИрдХрд▓реНрдкрд┐рдХ рдХреНрд╖рдорддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдПрдХ DB рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕реЗрд╡рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрдм рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рдореИрдВ рдЗрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдЪреЗрдХ рдХреЗ рд╕рд╛рде docker exec рд╕рд╛рде рд╣рд▓ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЬрд╛рдВрдЪрддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╕рд░рд▓ рдХреНрд╡реЗрд░реА рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред

рдЖрдВрддрд░рд┐рдХ рдЪреЗрдХ рдХрдорд╛рдВрдб рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП docker run рд▓рд┐рдП рдХреБрдЫ рд╡реИрдХрд▓реНрдкрд┐рдХ рдзреНрд╡рдЬ рдмрд╛рдж рдореЗрдВ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рджреВрд╕рд░реЗ рдХрдВрдЯреЗрдирд░ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

$ sudo docker run -d --name db training/postgres --readiness-check /bin/sh -c "is_ready.sh"
$ sudo docker run -d -P --name web --link db:db --wait-for-readiness db training/webapp python app.py

рдЬрд╣рд╛рдБ is_ready.sh рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдмреВрд▓рд┐рдпрди рдкрд░реАрдХреНрд╖рдг рд╣реИ рдЬреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдкрд░ рдирд┐рд░реНрдгрдп рдХреЗ рдкреНрд░рднрд╛рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред

+1

@ schmunk42 рдЕрдЪреНрдЫрд╛ рдЙрджреНрдзрд░рдг!

+1

+1

+1

+1

+1

+1

+1

+1

+1

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВрдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдирд╛ рд╡рд┐рдЪрд╛рд░ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП -1

рдЖрдкрдХреЗ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ 3 рдЬреА рдкрд╛рд░реНрдЯреА рд╕реЗрд╡рд╛ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдФрд░ рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдереЛрдбрд╝рд╛ рд╕рд╛ рдмреИрд╢ рдЖрд╡рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП nc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рджреЗрд░реА рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рд▓реБрднрд╛рд╡рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдПрдХ рдмреБрд░рд╛ рд╣рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐:

  • рдЖрдкрдХрд╛ рдХрдВрдЯреЗрдирд░ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ _always_ рдкреНрд░рддреАрдХреНрд╖рд╛ X рд╕реЗрдХрдВрдб рдХрд░реЗрдЧрд╛ред
  • X рд╕реЗрдХрдВрдбреНрд╕ рдЕрднреА рднреА рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ рд╣реЛрд╕реНрдЯ рдкрд░ рднрд╛рд░реА I / O рдпрд╛ CPU), рдЗрд╕рд▓рд┐рдП рдЖрдкрдХрд╛ рдХрдВрдЯреЗрдирд░ рдЕрднреА рднреА рд╡рд┐рдлрд▓ рдирд╣реАрдВ рд╣реИред
  • рдХреЛрдИ рдЕрд╕рдлрд▓ рд░рдгрдиреАрддрд┐ рдирд╣реАрдВред

рд░реИрдкрд░ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐:

  • рдЖрдкрдХрд╛ рдХрдВрдЯреЗрдирд░ рддреИрдпрд╛рд░ рд╣реИ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗред
  • рдЖрдк рдХрд┐рд╕реА рднреА рдЕрд╕рдлрд▓ рд░рдгрдиреАрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 10 рдмрд╛рд░ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдлрд┐рд░ рд╡рд┐рдлрд▓ рд░рд╣реЗрдВ, рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдЖрджрд┐ред рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЛрдиреЗ рд╕реЗ рджреЗрд░реА рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!

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

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд░рд┐рдЯрд░реНрди рдХреЛрдб рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рдХрд╛рд░рдг рд░рдЪрдирд╛ рдореЗрдВ рдбреЗрдЯрд╛-рдУрдирд▓реА рдХрдВрдЯреЗрдирд░ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреБрдЫ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИ?

рдЗрд╕реА рддрд░рд╣ рдЗрд╕ рдкрд░ рдореЗрд░рд╛ рдорди рдмрджрд▓ рд░рд╣рд╛ рд╣реИ, -1ред @dnephin рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рд╣реИред рдпрджрд┐ рдЖрдкрдХрд╛ _application_ рдПрдХ _service_ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЙрд╕ рд╕реЗрд╡рд╛ рдХреА рдЕрдиреБрдкрд▓рдмреНрдзрддрд╛ рдХреЛ рдЗрдирд╛рдпрдд рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬреИрд╕реЗ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛)ред рдпрд╣ рдХреБрдЫ рдмреИрд╢ рд░реИрдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдХрдореНрдкреЛрдЬрд╝ рдпрд╛ рдбреЙрдХрд░ рдореЗрдВ рдХреБрдЫ рддрд░реНрдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдЖрд╡реЗрджрди рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╣реИред рдЖрд╡реЗрджрди рд╕реНрддрд░ рдкрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХреЗрд╡рд▓ рдЖрд░рдВрдн рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛; рдпрджрд┐ рд╡рд╣ рд╕реЗрд╡рд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдПрдХ рдЖрд╡рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдХреБрдЫ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдм рдпрджрд┐ рд╣рдо рдЗрд╕ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХреЛ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдФрд░ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рд▓рд╛рдЗрдмреНрд░реЗрд░реА / рдлреНрд░реЗрдорд╡рд░реНрдХ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╢рд╛рдирджрд╛рд░ рд╣реЛрдЧрд╛ред

рдЙрди рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдард┐рди рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЕрдиреНрдп рдбреЗрдореЛрдВ рдХреЛ рд╕рд╛рдЗрдбрд▓реЛрдб рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рд╣реИред рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд░реЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬреЛ MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬрдмрдХрд┐ рдПрдХ рдЕрдиреНрдп рд░реЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ DB рдХреЛ рд╕реАрдбрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдореЗрд░реЗ рд▓рд┐рдП рд░реЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ DB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирддрд╛ рд╣реИ, рдореИрдВ рдпрд╛ рддреЛ рдХрд░реВрдВрдЧрд╛ ActiveRecord рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдореЙрдбрд┐рдлрд╛рдИ рдХрд░рдирд╛ рд╣реИ (рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ) рдпрд╛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдВ рдЬреЛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ DB рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдФрд░ рд╕реАрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдХреИрд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдбреЗрдЯрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ / рдпрд╛ рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рдЙрд╕ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЪрд▓рддреА рд╣реИ рдЬреЛ DB рдХреЛ рд╕реАрдб рдХрд░ рд░рд╣рд╛ рд╣реИ рддрд╛рдХрд┐ рдмрд╛рдХреА рдХреЛ рдЙрд╕рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрд┐рдд рдХрд░ рд╕рдХреЗред

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

@mattwallington рдореБрдЭреЗ рдпрдХреАрди рднреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрдВрдкреЛрдЬрд╝ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреИрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ ...
рдпрд╣ рднреА рдмрд╣реБрдд рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ рдЬреЛ рдХрдореНрдкреЛрдЬ рдХреЛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рднреА рдХрдард┐рди рдмрдирд╛ рджреЗрдЧрд╛ред рдореИрдВ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди / рдорд╛рдЗрдЧреНрд░реЗрд╢рди / рд╕реАрдбрд┐рдВрдЧ рдкрд░ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреБрдЫ @dnephin рдХреЗ рдЯрд┐рдкреНрд╕

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдореЗрд░реА рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдХреЗ рдмрд┐рдВрджреБ рд╕реЗ рдЪреВрдХ рдЧрдП рд╣реИрдВ, рд╢реЗрд▓реНрдл рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕реЗ рдХрдИ _precitely_ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдирд╣реАрдВ рдмрдирд╛рдП рдЧрдП рд╣реИрдВред рдХреЛрдИ рдЬрд╛рджреВ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЗрд╕ рд╕рдм рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХрдореНрдкреЛрдЬрд╝ рдмрд╕ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ +1 @mattwallington рд╡рд┐рдЪрд╛рд░

рдзрдиреНрдпрд╡рд╛рджред рдпрд╣ рд╕рд░рд▓ рд╣реИ (рдЙрддреНрдкрд╛рдж рд╕реНрддрд░ рдкрд░ред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рд╡рд┐рдХрд╛рд╕ рдХреА рддрд░рдл рд╕реЗ рдХреНрдпрд╛ рд▓реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдХреЛрдб рдХреЛ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ) рд▓реЗрдХрд┐рди рдпрд╣ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рдмрд╣реБрдд рдХреБрдЫ рд╣рд▓ рдХрд░реЗрдЧрд╛ рдФрд░ рд╢рд╛рдпрдж рдмрд╣реБрдд рд╕реЗ рдЕрдиреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдореБрджреНрджреЗред

рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдХреИрд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдбреЗрдЯрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ / рдпрд╛ рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рдЙрд╕ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЪрд▓рддреА рд╣реИ рдЬреЛ DB рдХреЛ рд╕реАрдб рдХрд░ рд░рд╣рд╛ рд╣реИ рддрд╛рдХрд┐ рдмрд╛рдХреА рдХреЛ рдЙрд╕рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрд┐рдд рдХрд░ рд╕рдХреЗред

@mattwallington : рд╕реНрдХреАрдорд╛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдирдВрдмрд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдпрджрд┐ рд╕рдВрдЦреНрдпрд╛ рд╕рд╣реА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИред

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

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

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

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

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

recover: auto рдЬреИрд╕рд╛ рдХреБрдЫ рднреА 2, 4, 8, 16 рдФрд░ 32 рд╕реЗрдХрдВрдб рдореЗрдВ 5 рдмрд╛рд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рдлрд▓ рдХрдВрдЯреЗрдирд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдЧрд╛ рдФрд░ рдлрд┐рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреЗ рджреЗрдЧрд╛ред

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХрдВрдЯреЗрдирд░ рдирд┐рд░реНрднрд░рддрд╛ рдХрдВрдЯреЗрдирд░ рдХреА рдзрд╛рд░рдгрд╛ рдХрд╛ _thought_ рд╣реИ?

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

`` `#! yml
db:
рдЫрд╡рд┐: mysql

рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░:
рд▓рд┐рдВрдХ:
- рдбреА.рдмреА.
рдорд╛рддреНрд░рд╛:
- /рд╡рд░/рд▓рд┐рдм/docker.sock:/docker.sock
- $ {PWD} /docker-compose.yml:/docker-compose.yml
рдХрдорд╛рдВрдб: рдбреЙрдХ-рдХрдореНрдкреЛрдЬ рдЕрдк -d рдРрдк

рдПрдкреНрд▓рд┐рдХреЗрд╢рди:
рдЫрд╡рд┐: myuser / myapp
рд▓рд┐рдВрдХ:
- рдбреА.рдмреА.
`` `

рдпрд╣рд╛рдБ рдореВрд▓ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк _solve_ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рдорд░реНрдкрд┐рдд рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рд╕реЗрд╡рд╛ рд╣реИ рдХрд┐ Docker рд╣рдм рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдмрдирд╛рдиреЗ рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдпрдВ рд╡рд╕реВрд▓реА рддрдВрддреНрд░ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рддреЛ рдмрд╕ рдЕрдкрдиреА рд░рдЪрдирд╛ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ _would_ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реЗрд╡рд╛ / рдХрдВрдЯреЗрдирд░ / рдЫрд╡рд┐ рдХреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рдЫреАрдВрдЯреЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рджреВрд░ рд╣реИ ...

@prologic рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХреИрд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЬрд┐рд╕ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдЖрдк рдмреЛрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИ?

рдЖрдкрдХрд╛ db рдХрдВрдЯреЗрдирд░ ping рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдкреНрд░реА рд▓реЙрдиреНрдЪ рд╕рдлрд╛рдИ рдХрд░ рд░рд╣рд╛ рд╣реИ / рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ mysql / psql рдЖрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред

рдХреНрдпрд╛ рдЙрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рддрд░реАрдХреЗ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ / рдпрд╛ рдлрд┐рд░ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп waitfor рдкреНрд░рдХрд╛рд░ рдХреА рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ?

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

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

рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

$ sudo docker run -d --name db training/postgres --readiness-check /bin/sh -c "is_ready.sh"
$ sudo docker run -d -P --name web --link db:db --wait-for-readiness db training/webapp python 

рдЬрд╣рд╛рдБ is_ready.sh рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдмреВрд▓рд┐рдпрди рдкрд░реАрдХреНрд╖рдг рд╣реИ рдЬреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдкрд░ рдирд┐рд░реНрдгрдп рдХреЗ рдкреНрд░рднрд╛рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред

рдпрд╣ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рддрддреНрдкрд░рддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЬрд╣рд╛рдБ is_ready.sh рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдмреВрд▓рд┐рдпрди рдкрд░реАрдХреНрд╖рдг рд╣реИ рдЬреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдкрд░ рдирд┐рд░реНрдгрдп рдХреЗ рдкреНрд░рднрд╛рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред

рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЛ _something_ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЫрд╡рд┐рдпреЛрдВ / рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрд┐ рдХрдВрдЯреЗрдирд░ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдкрд░ рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЬреЛ рд╣рдореЗрдВ 1 рд╡рд░реНрдЧ рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд╛рддрд╛ рд╣реИ ред; рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╕реЗрд╡рд╛ рдЖрдЙрдЯреЗрдЬ / рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдХреЗ рд▓рд┐рдП рд▓рдЪреАрд▓рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╣реИрдВ рдЬреЛ рдЙрдирдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП "рдХреНрдпрд╛" рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ?

рдпрд╛ рдореИрдВ рдпрд╣рд╛рдБ рдХреБрдЫ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ?

рдореИрдВ рд╕рд╣рдордд рд╣реВрдБред рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдбреЗрд╡рд▓рдкрд░ / рдХрдВрдЯреЗрдирд░ / рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рд╣реИ

рдЧреБрд░реБрд╡рд╛рд░, 30 рдЬреБрд▓рд╛рдИ 2015 рдХреЛ, рд╕реЗрдмреЗрд╕реНрдЯрд┐рдпрди рд╡реИрди рд╕реНрдЯрд┐рдЬрди рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @ithub.com
рд▓рд┐рдЦрд╛ рдерд╛:

рдЬрд╣рд╛рдБ is_ready.sh рдПрдХ рд╕рд░рд▓ рдмреВрд▓рд┐рдпрди рдкрд░реАрдХреНрд╖рдг рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдкреНрд░рднрд╛рд░реА рд╣реИ
рдЬрдм рдХрдВрдЯреЗрдирд░ рддреИрдпрд╛рд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

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

рдЬреЛ рд╣рдореЗрдВ 1 рд╡рд░реНрдЧ рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд╛рддрд╛ рд╣реИ ред; рдбреЗрд╡рд▓рдкрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ
рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╕реЗрд╡рд╛ рдЖрдЙрдЯреЗрдЬ / рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдХреЗ рд▓рд┐рдП рд▓рдЪреАрд▓рд╛ рдмрдирд╛рдиреЗ, рдХреНрдпреЛрдВрдХрд┐
рд╡реЗ рдХреЗрд╡рд▓ рд╡рд╣реА рд╣реИрдВ рдЬреЛ "рд╕реНрдерд┐рддрд┐" рдХрд╛ рдЕрд░реНрде рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреА рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ?

рдпрд╛ рдореИрдВ рдпрд╣рд╛рдБ рдХреБрдЫ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ?

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/docker/compose/issues/374#issuecomment -126278215

рдЬреЗрдореНрд╕ рдорд┐рд▓реНрд╕ / рдкреНрд░реЛрд▓реЛрдЧрд┐рдХ

E: [email protected]
рдбрдмреНрд▓реНрдпреВ: prologic.shortcircuit.net.au

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

рд╣рд╛рдБ рдпрд╣ рд╕рд╣реА рд╣реИ!

рдЧреБрд░реБрд╡рд╛рд░, 30 рдЬреБрд▓рд╛рдИ 2015 рдХреЛ, рдПрдбреНрд░рд┐рдпрдирд╣рд╛рд░реНрдЯ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

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

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/docker/compose/issues/374#issuecomment -126285056

рдЬреЗрдореНрд╕ рдорд┐рд▓реНрд╕ / рдкреНрд░реЛрд▓реЛрдЧрд┐рдХ

E: [email protected]
рдбрдмреНрд▓реНрдпреВ: prologic.shortcircuit.net.au

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

рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХрд╛ рдиреНрдпреВрдирддрдо рд╕реЗрдЯ рд▓рдЧрддрд╛ рд╣реИ:

  • рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХрдВрдкреЛрдЬ рдПрдХ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗ рдЬрдм рддрдХ рдХрд┐ рджреВрд╕рд░реА рд╕реЗрд╡рд╛ "рддреИрдпрд╛рд░" рди рд╣реЛ рдЬрд╛рдПред
  • рдореИрдВ "рд░реЗрдбреА" рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ "рдкреЛрд░реНрдЯ рдПрдХреНрд╕ рдкрд░ рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ", рдпрд╛ рдХреБрдЫ рдФрд░ред

рдЪрд▓рд┐рдП рдпрд╣ рднреА рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдбреЙрдХрд░ рдореЗрдВ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

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

web:
  image: mywebapp
  links: ["db"]
  wait_for: ["db_wait"]

db_wait:
  image: netcat
  links: ["db"]
  command: sh -c "while ! nc -w 1 -z db 5432; do sleep 1; done"

db:
  image: postgres

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдХрд╕реНрдЯрдо рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ "рдкреНрд░рддреАрдХреНрд╖рд╛" рд╕реЗрд╡рд╛ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред рдпрд╣рд╛рдБ, db_wait рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ mytable mydb рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ:

db_wait:
  image: postgres
  links: ["db"]
  command: sh -c "while ! psql --host db --dbname mydb -c "\d mytable"; do sleep 1; done"

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ db рддреИрдпрд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ, рддреЛ рдЖрдк рдЙрд╕ рдЪреАрдЬрд╝ рдХрд╛ рдЗрдВрддрдЬрд╝рд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

web:
  image: mywebapp
  links: ["db"]
  wait_for: ["prepare_db"]

prepare_db:
  image: prepare_db
  links: ["db"]
  command: ./prepare.sh

db:
  image: postgres

рдкрд╣рд▓рд╛ рдорд╛рдорд▓рд╛ (рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рдХрдВрдЯреЗрдирд░ рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ) рддрдм рддрдХ рдЖрдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реЛред

web:
  image: mywebapp
  links: ["db"]
  wait_for_tcp: ["db:5432"]

db:
  image: postgres

рдЗрд╕ рд╕рдм рдореЗрдВ рдПрдХ рдЫрд┐рдкреА рд╣реБрдИ рдирд┐рд╣рд┐рддрд╛рд░реНрде рд╣реИ: docker-compose up -d рдХреЛ рдмреНрд▓реЙрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрдмрдХрд┐ рдордзреНрдпрд╕реНрде рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдпрд╛ рддреИрдпрд╛рд░реА рд╕реЗрд╡рд╛ рдЪрд▓ рд░рд╣реА рд╣реИ, рддрд╛рдХрд┐ рдпрд╣ рдЙрдкрднреЛрдХреНрддрд╛ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХреЗред

рд╣рд╛рдБред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдбреЙрдХрдЯрд░ рдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХрдВрдЯреЗрдирд░ рдХрдм рддреИрдпрд╛рд░ рд╣реИ, рдФрд░ рдлрд┐рд░ рд░рдЪрдирд╛ рдЗрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред рд╣рдо рддрдм рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рд╕реАрдзреЗ docker рдореЗрдВ рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

web:
  image: mywebapp
  links: ["db"]
  wait_for: ["db"]

db:
  image: postgres
  ready_when: sh -c "while ! psql --host db --dbname mydb -c "\d mytable"; do sleep 1; done"

рдлрд┐рд░, рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдирдИ рд╕реЗрд╡рд╛рдПрдБ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ

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

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

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

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдХрдВрдЯреЗрдирд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рдмреЗрдХрд╛рд░ рд╣реИред

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

рдЪреВрдВрдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ docker-compose ps -s (рдирд┐рд░реНрднрд░рддрд╛ рдХреНрд░рдо рдореЗрдВ рд╕реВрдЪреА рд╕реЗрд╡рд╛рдУрдВ, # 1077) рдХреА рд░рдЪрдирд╛ рдХрд░рддрд╛ рд╣реИред

рдЗрди рджреЛ рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде, рдПрдХ рдЙрдкрдХрд░рдг рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ:

  1. рдирд┐рд░реНрднрд░рддрд╛ рдХреНрд░рдо рдореЗрдВ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдирд╛рдореЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП docker-compose ps -s рдЪрд▓рд╛рдПрдВ
  2. docker-compose up -d --no-recreate <first service from the list> рдЪрд▓рд╛рдПрдВ
  3. рдЙрд╕ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП "рд╕реНрд╡рд╛рд╕реНрдереНрдп рдкрд░реАрдХреНрд╖рдг" рдХрдорд╛рдВрдб рддрдм рддрдХ рдЪрд▓рд╛рдПрдВ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рд╕реНрд╡рд╕реНрде рди рд╣реЛ рдЬрд╛рдП рдпрд╛ рдпрд╣ рд╕рдордп рд╕рдорд╛рдкреНрдд рди рд╣реЛ рдЬрд╛рдПред рдпрд╣ рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рдпрд╛ docker exec рдХреЙрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
  4. рд╕реВрдЪреА рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП 2 рдФрд░ 3 рджреЛрд╣рд░рд╛рдПрдВ
  5. рднрд╛рдЧреЛ docker-compose logs (рдпрд╛ рдирд╣реАрдВ рддреЛ -d рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)

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

рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛?

рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рд╣рдордиреЗ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рджрд╛рдпрд░реЗ рдХреЛ рд╕реАрдорд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдЕрдзрд┐рдХ рдЙрдЪрд┐рдд рд╣реИ: +1:

@dnephin рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рд╕реЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд▓рдЪреАрд▓рд╛ рд╣реИ рдФрд░ рдХрдореНрдкреЛрдЬ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ @mattwallington рдХреЗ рд╕рдорд╛рди рдПрдХ рддрддреНрдХрд╛рд▓ рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ

+1

рдбреЙрдХ-рдХрдореНрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП ...

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

depends_on:
  container: foo
  requires: running

рдпрд╛ рдпрд╣ рдирд┐рд░реНрднрд░рддрд╛ рдпрд╣ рдорд╛рдпрдиреЗ рд░рдЦрддреА рд╣реИ рдХрд┐ рдХрдВрдЯреЗрдирд░ TCP рдкреЛрд░реНрдЯ рд╕реБрди рд░рд╣реЗ рд╣реИрдВред

depends_on:
  container: foo
  requires: listening

рдпрд╣ рдХрд╣рдирд╛ рдХрд┐ рдпрд╣ рдХреБрдЫ рдмрд╛рд╣рд░реА рдЯреВрд▓ рдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдХрд╛рдо рд╣реИ, docker-compose рдХрд╣рдирд╛ рдпрд╣ рд╣реИ рдХрд┐ docker-compose рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдорд╢реАрди рдкрд░ 2 рдпрд╛ рдЕрдзрд┐рдХ рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реБрдЪрд┐ рдпрд╛ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдирд╣реАрдВ рд╣реИред рддреЛ рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХреНрдпрд╛ рд╣реИ?

рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдХрд╛рдо рд╣реИ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдорд▓реНрдЯреА-рдХрдВрдЯреЗрдирд░ рдореИрдиреЗрдЬрдореЗрдВрдЯ рдЯреВрд▓ рдХреА рдЪрд┐рдВрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЪреАрдЬреЛрдВ рдХреЛ рдХрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

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

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

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

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

рд╢рд╛рдпрдж рдореИрдВ рдПрдХ JVM рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░ рдПрдХ рдЕрдиреНрдп рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдЯреВрд▓ рдЬреЛ рдЗрд╕реЗ рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рджреЛрдиреЛрдВ рдореЗрдЬрдмрд╛рди PID рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рд╣реИрдВ рддрд╛рдХрд┐ рдПрдХ рджреВрд╕рд░реЗ рдкрд░ рдирдЬрд░ рд░рдЦ рд╕рдХреЗ рдФрд░ рдореИрдВ рдХреЗрд╡рд▓ рдЕрдзрд┐рдХреГрдд рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рдХреЗ рдЯреВрд▓ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХреГрдд рд╣реВрдВ ред рдпрджрд┐ рдирд┐рдЧрд░рд╛рдиреА рдЙрдкрдХрд░рдг рдореМрдЬреВрджрд╛ рдЬреЗрд╡реАрдПрдо рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдХрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ (рдЬрд╛рд╣рд┐рд░ рд╣реИ)ред рд╕рдВрднрд╡рддрдГ рд╕реИрдХрдбрд╝реЛрдВ рдпреВрдЬреЗрд╕ рд╣реИрдВ рдЬрд╣рд╛рдВ рдСрд░реНрдбрд░ рдорд╛рдпрдиреЗ рд░рдЦрддреЗ рд╣реИрдВ, рдХреБрдЫ рдиреЗрдЯрд╡рд░реНрдХ (mysql, elasticsearch, рд╕рд░реНрд╡рд┐рд╕ рдбрд┐рд╕реНрдХрд╡рд░реА рдХреНрд▓рд╕реНрдЯрд░реНрд╕ рд╕рднреА рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдХреБрдЫ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХрд╛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ usecase (1) рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рдХрд┐ рдХреБрдЫ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЖрдк рд╕рд┐рд░реНрдл рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЛ рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддреЗ

рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдЬреИрд╕реЗ рд╣реА рдПрдХ рдЙрдкрдХрд░рдг рдХрдИ рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдЪрд┐рдВрддрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рддреБрд░рдВрдд рдЖрджреЗрд╢ рджреЗрдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЖрддрд╛ рд╣реИред рдпрджрд┐ рдСрд░реНрдбрд░ рджреЗрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдФрд░ рдСрд░реНрдбрд░ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП docker-Compose рдХреЗ рдЖрд╕рдкрд╛рд╕ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА рдЬрд╛рдП, рдФрд░ рдлрд┐рд░ рдХреБрдЫ рдФрд░ рдХрд┐рдпрд╛ рдЬрд╛рдП, рддреЛ docker-compose рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рддрдереНрдп рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп JSON / YAML cmdline args рд╕реЗ рдЕрдзрд┐рдХ рд╕реБрдВрджрд░ рд╣реИред

IMHO рдЕрдВрддрддрдГ рдПрдХ рдЙрдкрдХрд░рдг рдпрд╛ рддреЛ рдЙрдкрдпреЛрдЧреА рд╣реИ рдпрд╛ usecases рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдПрдХ рд╣реА рдореЗрдЬрдмрд╛рди рдкрд░ рдХрдИ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░-рд░рдЪрдирд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИред рдпрджрд┐ рдкрд░реНрдпрд╛рдкреНрдд рд▓реЛрдЧ рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд usecases рдСрд░реНрдбрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИрдВ рдФрд░ рдПрдХ рдЙрдкрдХрд░рдг рдЙрдиреНрд╣реЗрдВ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд▓реЛрдЧ рдХреЗрд╡рд▓ рдЙрди usecases рдХреЗ рд▓рд┐рдП рдХрд╣реАрдВ рдФрд░ рдЬрд╛рдПрдВрдЧреЗ рдЬреЛ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИред

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

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

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

Jul 31, 2015 рдХреЛ, 3:42 рдкреВрд░реНрд╡рд╛рд╣реНрди рдкрд░, Aanand Prasad рд╕реВрдЪрдирд╛рдПрдВ @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдХрд╛рдо рд╣реИ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдорд▓реНрдЯреА-рдХрдВрдЯреЗрдирд░ рдореИрдиреЗрдЬрдореЗрдВрдЯ рдЯреВрд▓ рдХреА рдЪрд┐рдВрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЪреАрдЬреЛрдВ рдХреЛ рдХрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

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

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

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

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

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВред

+1 @ рдЖрдирдВрдж рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рджрд╛рдпрд░реЗ рдореЗрдВ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдРрд╕рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдлреАрдЪрд░ рдХреЛ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡реЗ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ "рдЯрд┐рдХрд╛рдК" рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдбрд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЬрдирддрд╛ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧ рд░рд╣рд╛ рд╣реИред рд╡реЗ _will_ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

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

рд▓реЗрдХрд┐рди рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдЙрд╕реА рдкреГрд╖реНрда рдкрд░ рд╣реЛрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реЗрдЧрд╛, рдпрд╣ рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реЗрдЧрд╛ред _ рд╣рд▓ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдХрд┐рд╕ рдбрд┐рдЧреНрд░реА рдкрд░ рдирд┐рд░реНрднрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣реА рдореИрдВ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

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

рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрдХрдиреАрдХ рдХреБрдЫ рдРрд╕реА рд╣реИ рдЬреИрд╕реЗ рдХрд┐ etcd рдпрд╛ рд╕рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ "рд╕рд░реНрд╡рд┐рд╕ рд░рдЬрд┐рд╕реНрдЯреНрд░реА"ред рдХреИрд╕реЗ рдПрдХ wa_for_service рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ:

web:
  image: mywebapp
  links: ["db"]
  wait_for_service:
    type: etcd (or consul, or zk)    -- or use swarm type notation
    addr: http://my.etcd.com/
    path: postgres.service

db:
  image: postgres

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

рд╣рд╛рдп @рдЖрдирдВрджред

рдореИрдВ рдЖрдЬ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ @bfirsh рдХреЗ рд╕рд╛рде

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

рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Riak рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рдЬрдиреНрдо рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред

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

рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдкрд░реАрдХреНрд╖рдг рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕реЗрд╡рд╛рдПрдБ рднреА рд▓рд╛рднрджрд╛рдпрдХ рд╣реИрдВред

@elliotcm рджреЛрдиреЛрдВ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╕рд╣рдордд рд╣реБрдПред

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

рд╣рдордиреЗ рдпрд╣ рдмрддрд╛рддреЗ рд╣реБрдП рдПрдХ рдХрд┐ рд╣рдордиреЗ рдЗрд╕реЗ рдХреНрдпреЛрдВ рдмрдирд╛рдпрд╛ рдФрд░ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ ред

@eeeeee рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдФрд░ рдЙрдкрдпреЛрдЧреА рд▓рдЧ рд░рд╣рд╛ рд╣реИ! рдХреНрдпрд╛ рдЖрдк рд╣рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдШреВрдо рд░рд╣рд╛ рд╣реИ; рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдбреЙрдХ-рдХрдореНрдкреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдореЗрдВ?

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

рдореИрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ / рдЬрд╛рдБрдЪ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрддреНрд╕реБрдХ рд╣реВрдБ, рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдБ рдХреБрдЫ рднреНрд░рд╛рдордХ рдореБрд╢реНрдХрд┐рд▓ рдорд╛рдорд▓реЗ рд╣реИрдВред рдореБрдЭреЗ рдЪрд░реНрдЪрд╛рдУрдВ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреА рдЦреБрд╢реА рд╣реИред

@prologic рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпрд╛ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ / рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ waitforservices рдХрдорд╛рдВрдб рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд╕рднреА рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдвреВрдВрдврддрд╛ рд╣реИ рдФрд░ рддрдм рддрдХ рдЪрд▓рддрд╛ рд╣реИ рдЬрдм рддрдХ рдпрд╣ рдЙрдирд╕реЗ рдЬреБрдбрд╝ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдмреАрдд рдЪреБрдХрд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 60 рд╕реЗрдХрдВрдб)ред рдмрд╕ рд╕рднреА рдХреЛрдб рдЪрд▓рд╛рдПрдВ рдЬреЛ рдмрд╛рдЗрдирд░реА рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ (рдЖрдк рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ)ред

@pugnascotia рдЖрдкрдХрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд╣реЛрдиреЗ рдХреЗ рджреМрд░рд╛рди рдХреЗрд╡рд▓ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкрд░ рд╣реА рд╕реБрди рд╕рдХрддрд╛ рдерд╛ - рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреЗ рдЗрдВрдбрд┐рдХреЗрдЯрд░ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдХрдВрдЯреЗрдирд░ рд╡реИрд╕реЗ рднреА рддреИрдпрд╛рд░ рд╣реИред рд╣рдо MySQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рд╡реЗрдЯрдлрд╝реЛрд░реНрд╕ рд╕рд░реНрд╡рд┐рд╕реЗрдЬрд╝ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред

@aanand Postgres рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ TCP рдкреЛрд░реНрдЯ рдХреЗ рдЦреБрд▓рдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╝рд╛рд░ _not_ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ - рдпрджрд┐ рдЖрдк рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ (docker) рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрднреА-рдХрднреА FATAL: the database system is starting up. рдЬреИрд╕реА рддреНрд░реБрдЯрд┐ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрдВрдЧреЗред psql рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдкреЛрд╕реНрдЯрдЧреНрд░реИрдЬ рддреИрдпрд╛рд░ рд╣реИ - рдореИрдВ select version() рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдПрдХ рд╣рд▓реНрдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред

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

рдЗрд╕реЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдмреБрд▓реЗрдЯрдкреНрд░реВрдл рд╣реИ):

db:
  image: postgres:9.3
  ports:
    - "5432:5432"
createdbs:
  image: postgres:9.3
  links:
    - db
  command: >
    /bin/bash -c "
      while ! psql --host=db --username=postgres; do sleep 1; done;
      psql --host=db --username=postgres -c 'CREATE DATABASE \"somedatabase\";';
    "

рдореИрдВ @olalonde рдХреЗ рд╕рдорд╛рди рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред /bin/bash -c рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдПрдХрд▓ рдЙрджреНрдзрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдореИрдВ рдЙрди рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ рдЬреЛ рд▓рд┐рдВрдХ рд╕реЗ рдлрд┐рд░ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддрд╛рдХрд┐ рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдмрд┐рдирд╛ рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдореЗрдВ рд╕реНрдерд╛рдиреЛрдВред рдпрд╣ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реЗрд╡рд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдПрдкреАрдЖрдИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд╛рд▓рд┐рдХрд╛ рдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд╡реЗрд░реА рдЬрд╛рдБрдЪ рдЪрд▓рд╛рдХрд░ рдЙрдЪрд┐рдд рдбреЗрдЯрд╛ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реИ рдХрд┐ рдореБрдЭреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдареАрдХ рд╕реЗ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

+1 рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ

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

рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдкреАрдЫреЗ рд╕реЗ рдзрдХреНрдХрд╛ рджреВрд╕рд░реЛрдВ рдХреЛ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╕реЗ рджреВрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ; рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдзрд┐рдХрд╛рд░ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╕рдордп-рд╕рдордп рдкрд░ рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░ рдХрд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ; рдЕрд▓реНрдкрдХрд╛рд▓реАрди рдореВрд▓реНрдп рдХреЗ рд╕рд╛рдеред (рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреА рдЦрд╛рддрд┐рд░ рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░рд┐рдВрдЧ)ред

рд╣рд╛рдВ, рдореИрдВрдиреЗ рдХрд╣рд╛ "рдЪрд╛рд░реЛрдВ рдУрд░ рдХрд╛рдо"; рдФрд░ рдореБрдЭреЗ рдЧрдВрджрд╛ рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореЗрд░реА рд░рдЪрдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреВрд╕рд░реЛрдВ рдХреЛ рдЙрддреНрдкрд╛рджрдХ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдпрд╣ рд╕рд░рд▓ рд╡рд┐рдиреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред

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

@beardface , рдФрд░ рдмрд╛рдХреА рд╕рднреА: рдХреМрди рд╕реА рд╕реБрд╡рд┐рдзрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдРрдк рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░реЗрдЧреА?

  1. рдЙрд╕ рд╕реЗрд╡рд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ A рдХреЛ рд╕реЗрд╡рд╛ B рд╢реБрд░реВ рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? (рдЬреЛ, рдзреНрдпрд╛рди рд░рдЦреЗрдВ, рдЕрднреА рднреА рд░реЗрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬрдм рдПрдХ рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ)
  2. рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд┐ рд╕реЗрд╡рд╛ B рдХреЛ рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреА рд╣реЛрдЧреА? (рдЬреЛ, рдзреНрдпрд╛рди рд░рдЦреЗрдВ, рдЕрднреА рднреА рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬрдм рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреА рдмрд╛рдд рд╕реБрдирдХрд░ рд▓реЗрдХрд┐рди рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реВрдк рд╕реЗ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдИ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХрдВрдЯреЗрдирд░ @rarkins рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ
  3. рд╕реЗрд╡рд╛ рдмреА рдкрд░ рдПрдХ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛, рдФрд░ рдЙрд╕ рд╕реЗрд╡рд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдП рдХреЛ рд╕реЗрд╡рд╛ рдмреА рдХреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛?

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

+3

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдкреЛрд░реНрдЯ 80_ рдкрд░ _http 200 рдУрдХреЗ рдЬреИрд╕рд╛ рдХреБрдЫ рдЗрддрдирд╛ рдЖрдо рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдПрдХ "рдмреИрдЯрд░реА рд╢рд╛рдорд┐рд▓" рдирдВрдмрд░ 3 (рддрд╛рдХрд┐ рдореИрдВ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХрд╣рдиреЗ рдХреА рд╣рд┐рдореНрдордд рдХрд░рддрд╛ рд╣реВрдВ?)

"рдХрдВрдЯреЗрдирд░ рдКрдкрд░ рд╣реИ" рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорддрд╛ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд Ie, "рдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рд╣реИ" рдФрд░ "рдкреЛрд░реНрдЯ рдЦреБрд▓рд╛ рд╣реИ" рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡реЗрдЯ рдФрд░ рдлрд┐рд░ рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ "рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЗрдпрд░" рдЪреЗрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред

3 рдХреЛ рдореЗрд░рд╛ рд╡реЛрдЯ рдорд┐рд▓рд╛

3 рдПрдХ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ 2 рдПрдХ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реИред рд╕рднреА 3 рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди 2 рдпрд╛ 1 рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред

3 рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░реЗрдВ

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

3 рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░реЗрдВ

3 рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░реЗрдВ

рд╡реЛрдЯ рдХреЗ рд▓рд┐рдП 3. рдмреАрдЯрд╛ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд░реБрдЪрд┐ рдпрд╣ рднреАред

3 рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░реЗрдВред

рд╡реЛрдЯ рдХреЗ рд▓рд┐рдП 3. рдмреАрдЯрд╛ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд░реБрдЪрд┐ рдпрд╣ рднреАред

3 рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░реЗрдВ

3

рд╕рдмрдХреЛ рдзрдиреНрдпрд╡рд╛рджред рдЕрдм рдЖрдк рдорддрджрд╛рди рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ - рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрджреЗрд╢ рд╕реНрдкрд╖реНрдЯ рд╣реИред

рдореИрдВ https://github.com/docker/compose/issues/374#issuecomment -126312313 рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдбрд┐рдЬрд╝рд╛рдЗрди рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЪрд╛рд╣рддрд╛

wait_for_tcp рд╕реБрд╡рд┐рдзрд╛ рдкрджреНрдзрддрд┐ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдХрдВрдЯреЗрдирд░ рд╣реЛрдиреЗ рд╕реЗ рдпрд╣ рдЙрд╕реА рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХрд░рдиреЗ рд╕реЗ рдЖрд╕рд╛рди рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ @olalonde рдФрд░ @mbentley рджреНрд╡рд╛рд░рд╛ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИред ред

рдХреНрдпрд╛ рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ alexec docker-maven-plugin рдореЗрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ? рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдбреЙрдХ-рдХрдВрдкреЛрдЬрд╝ / рдЕрдВрдЬреАрд░ рдХреЗ рд╕рдорд╛рди рдмрдирд╛рдпрд╛ рдФрд░ рдЕрдм рддрдХ, рдпрд╣ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред

healthChecks:
  pings:
     # check this URL for 200 OK
     - https://localhost:8446/info
     # check another URL with non-default time out, with a pattern, and non checking SSL certificates
     - url: https://localhost:8446/info
       timeout: 60000
       pattern: pattern that must be in the body of the return value
       sslVerify: false
  logPatterns:
     - pattern that must be in log file
     - pattern: another pattern with non-default timeout
       timeout: 30000

рд╕реНрд░реЛрдд: https://github.com/alexec/docker-maven-plugin/blob/master/forage.d

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

@ceagan рдЬреИрд╕рд╛ред рдХрд╕реНрдЯрдо рдХрдорд╛рдВрдб рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛрдВрдЧреЗред рдЬреИрд╕реЗ

healthChecks:
  custom:
    # retry this command until it returns success exit code
    - cmd: psql --host=localhost --username=postgres
      sleep: 1s

рдореБрдЭреЗ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ checks healthChecks рд╕реЗ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╕ рдХрдиреНрд╡реЗрдВрд╢рди рдХреЛ рдпрд╛рдж рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред wait (рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рддрдиреЗ рд╕реЗрдХрдВрдб рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ), attempts (рдХрд┐рддрдиреА рдмрд╛рд░ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреЛ рдЫреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП), retire (рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреЗ рд╕реЗрдХрдВрдб) рдкреИрд░рд╛рдореАрдЯрд░ред

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

рдпрд╣рд╛рдБ рднреА, рд╡рд┐рдХрд▓реНрдк 3ред

+1

+1

+1

рдореИрдВ рдПрдХ рдХрд╕реНрдЯрдо рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд░рд╣реВрдБрдЧрд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

+1

+1

рд╡рд┐рдХрд▓реНрдк 3-рд╕реНрд╡рд╛рд╕реНрдереНрдп рдкрд░реАрдХреНрд╖рдг рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред

+1

+1

+1

+3ред
рдЪрд░реНрдЪрд╛ рдореЗрдВ рдХреБрдЫ рдЕрдиреНрдп рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, @ рдирд╛рдирд╛рдирдВрдж рдиреЗ рдЬреЛ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдП рд╣реИрдВ, рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ: рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдбреЙрдХ-рдХрдВрдкреЛрдЬ рдХреА ред рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬ рдЗрди рд╕рднреА рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рд╛рдл-рд╕реБрдерд░реЗ рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рдерд╛, рдЕрдЧрд░ рдбреЙрдХрдЯрд░ рд░рд╛рдЬреНрдп рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ред рд▓реЗрдХрд┐рди рдХрд░реНрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рддрддреНрдХрд╛рд▓, рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рдЪрд┐рдкрдХ рдЬрд╛рддрд╛ рд╣реИ, рдЗрддрдиреА рддреЗрдЬреА рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдореБрджреНрджреЗ рдорд╣рддреНрд╡рд╣реАрди рд╣реИрдВред
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдЕрдкрдиреА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдЪреБрдирдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдкреАрдЫрд╛ рдХрд░рддрд╛ рд╣реВрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрднреА-рдХрднреА рдореИрдВ рдХрдИ MariaDB рдЙрджрд╛рд╣рд░рдг рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рдПрдХрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рд╕реЗрд╡рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЕрдиреНрдп рдмрд╛рд░ рдореИрдВ рдПрдХ рдПрдХрд▓ рдорд╛рд░рд┐рдпрд╛рдбреАрдмреА рдЙрджрд╛рд╣рд░рдг рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬреЛ рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рдбреЛрдХрд░ рдореБрдЭреЗ рдмрддрд╛рдП рдХрд┐ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХреНрдпрд╛ рд╣реИ, рдпрд╛ рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдбреЙрдХрд░ рдХреЛ рд╣рдореЗрд╢рд╛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рд▓реЛрднрди рд▓рдЧрддреЗ рд╣реИрдВ;)ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдбреЙрдХрдЯрд░ рдХреЛ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдХрдВрдЯреЗрдирд░реЛрдВ рдиреЗ рдЕрдкрдиреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордирдорд╛рдирд╛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЙрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬ рдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдХрдВрдЯреЗрдирд░ рдХреЛ "рддреИрдпрд╛рд░" рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рджреВрд╕рд░реЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХреЗрдВред
"рд╕рд┐рдВрдЧрд▓ рдбреАрдмреА-рдорд▓реНрдЯреАрдкрд▓ рдПрдкреНрд╕" рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬреИрд╕реЗ:

db:
  image: postgres:9.3
  ports:
    - "5432:5432"
app1:
  image: wordpress
  links:
    - db [WP]
app2:
  image: ghost
  links:
    - db [GST]

Docker Compose "db" рд▓реЙрдиреНрдЪ рдХрд░реЗрдЧрд╛, рдФрд░ рдЗрд╕рдХреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ (Docker Compose рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫреЗрдЧрд╛ред Yml рдлрд╝рд╛рдЗрд▓ рд╕реЗ, рдпрд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ "app1" "db" рдХреЛ "рд╡рд░реНрдбрдкреНрд░реЗрд╕ рд░реЗрдбреА" рд╣реЛрдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ (рди рдХреЗрд╡рд▓ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛, рдмрд▓реНрдХрд┐ рдЖрд╡рд╢реНрдпрдХ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рднреА)ред

рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕реЗ рджреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░рддрд╛ рд╣реВрдВ: рдПрдХ рдХрд╕реНрдЯрдо рдкреЛрд╕реНрдЯрдЧреНрд░реИрдХреНрд╕реНрд▓-рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдЫрд╡рд┐, рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреАрдмреА рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рддрд╛ рд╣реВрдВ; рдФрд░ рдПрдХ рдХрд╕реНрдЯрдо liquibase-postgresql рдЫрд╡рд┐, рдбреАрдбреАрдПрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдпрд╛ Wordpress рдХрдВрдЯреЗрдирд░ рд╕реЗ рдирд┐рдХрд╛рд▓рд╛)ред рддрднреА, рдореИрдВ "app1" рд▓реЙрдиреНрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдпрджрд┐ рдореБрдЭреЗ "рдЕрд╡рд╕рдВрд░рдЪрдирд╛" рдФрд░ "рдРрдкреНрд╕" рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд░ "рдЕрд╡рд╕рдВрд░рдЪрдирд╛" рдХрдВрдЯреЗрдирд░ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

Docker Compose рдЦреБрдж Docker рдХреА рддрд░рд╣ рд╣реА рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдЕрдЧрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред

рд╡рд┐рдХрд▓реНрдк 3 рдХреЗ рд▓рд┐рдП +1

+1

рд╡рд┐рдХрд▓реНрдк 3 рдХреЗ рд▓рд┐рдП +1ред

рд╡рд┐рдХрд▓реНрдк 3 рдХреЗ рд▓рд┐рдП +1

рд╡рд┐рдХрд▓реНрдк 3 рдХреЗ рд▓рд┐рдП +1

рдпрд╣ рдореБрджреНрджрд╛ рдХреБрдЫ рд╕рдордп рдХреЗ рдЖрд╕рдкрд╛рд╕ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реИ?

@ bweston92 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдерд┐рддрд┐ рдпрд╣ рд╣реИ рдХрд┐ @aand рдиреЗ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдкрд╣рд▓реЗ рдПрдХ рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдЗрд╕рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ

рдХрд┐рд╕реА рднреА рд╡реИрдХрд▓реНрдкрд┐рдХ рдбрд┐рдЬрд╛рдЗрди рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ, рдЙрдирдХреА рддрд╛рдХрдд / рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рдЪрд░реНрдЪрд╛ рдХреЗ рд╕рд╛рдеред

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @aanand рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдмрд╣реБрдд рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд▓рдЧрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рднреАред рдпрд╣ рдореЗрд░реА рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛ рдУрдЯреА рдЯреАрд╕реАрдкреА рдкреЛрд░реНрдЯ рдХреЗ рдЦреБрд▓рдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдмрд╕ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╕рд┐рд░реНрдл рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрдирдХреА рдХреЙрдореИрдВрдб рдХреЛ bash -c "sleep 2; python manage.py test --keepdb" рдмрджрд▓ рджрд┐рдпрд╛, рдЬреИрд╕реЗ:

db:
    image: postgres:9.5
test:
    build: .
    command: bash -c "sleep 2; python manage.py test --keepdb"
    volumes:
        - ./test_project:/app
    links:
        - db
        - selenium
    environment:
        - EXTERNAL_TEST_SERVER=http://testserver:8000/
        - SELENIUM_HOST=http://selenium:4444/wd/hub
selenium:
    image: selenium/standalone-chrome:2.48.2
    links:
        - testserver
testserver:
    build: .
    command: bash -c "sleep 5; python manage.py testserver 8000 --static"
    volumes:
        - ./test_project:/app
    ports:
      - "8000:8000"
    links:
        - db

рддрд╛рдХрд┐ рдореИрдВ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ docker-compose run test рдЪрд▓рд╛ рд╕рдХреВрдВред

рдпрд╣ рдмрддрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдЗрди рджрд┐рдиреЛрдВ рдХреМрди рд╕рд╛ рдореБрджреНрджрд╛ "рд╕рд╣реА" рд╣реИ рдПрдХ рдирдП рдбреЙрдХрдЯрд░ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕реНрдкрд╖реНрдЯ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд╡реЛрдЯ рдХреЛ рдПрдХ рдордЬрдмреВрдд рд╡рд┐рдЪрд╛рд░ рд╣реИред рдирдП рдбреЙрдХрдЯрд░ 1.9 рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде, рдФрд░ рдЗрд╕рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдХрдВрдЯреЗрдирд░ рд▓рд┐рдВрдХ рдХреЗ рдШрдЯрддреЗ рдШрдЯрд╛рд╡ рдХреЗ рд╕рд╛рде, рдЕрдм рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрдВрдЯреЗрдирд░ A рдХрдВрдЯреЗрдирд░ B рд╕реЗ рдкрд╣рд▓реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ - рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЖрдк Docker 1.9 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдм рдХрдВрдЯреЗрдирд░ рд▓рд┐рдВрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░реЗрдВред рд╡рд╣ ... рдЯреВрдЯ рдЧрдпрд╛ рд╣реИред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдБред рд╡рд╣рд╛рдБ рд╡рд┐рдХрд▓реНрдк 3 рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдордпрд░реЗрдЦрд╛ рд╣реИ? рдпрд╣ рддреЗрдЬреА рд╕реЗ рд╣реЛрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

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

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

рдЬреЛ рднреА рд╣реЛ, рдпрд╣ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдЧрд░ рд╣рдо https://github.com/docker/compose/issues/374#issuecomment -135090543 рд╕реЗ рд╡рд┐рдХрд▓реНрдк 3 рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЗ, рддреЛ рднреА рдЖрдкрдХреЛ рдЗрд╕ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЗрд╕ рдЕрдВрдХ рдореЗрдВ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рд╣реА рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (https://github.com/docker/compose/issues/374#issuecomment-53036154, https://github.com/docker/compose/issues/374#issuecomment-7134229999 ), рд▓реЗрдХрд┐рди рдкреБрди: рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЕрдкрдиреЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдХреЗ рдЕрд╕рдлрд▓ ред рдЖрдк рдХрд┐рд╕реА рднреА рдЙрддреНрдкрд╛рджрди рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рд╡реИрд╕реЗ рднреА рдпрд╣ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

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

рдХреНрдпрд╛ рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрдЬрд╛рдп рдХрдореНрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдн рд╣реИ? рдпрд╣ рд╢рд╛рдпрдж рдмрд╣рд╕ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рд╣реИред

Compose рдлрд╛рдЗрд▓ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдбрд╝рд╛ _dis рдиреБрдХрд╕рд╛рди_ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ up рдХрд╛рдлреА рдзреАрдорд╛ рдмрдирд╛рддрд╛ рд╣реИред

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

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

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

рдореЗрд░реЗ рдЖрдИрдлреЛрди рд╕реЗ рднреЗрдЬрд╛ рдЧрдпрд╛

18 рдирд╡рдВрдмрд░, 2015 рдХреЛ рдкреВрд░реНрд╡рд╛рд╣реНрди 11:01 рдмрдЬреЗ, рдбреИрдирд┐рдпрд▓ рдиреЗрдлрд┐рди рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @ithub.com рдиреЗ рд▓рд┐рдЦрд╛:

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

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

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

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

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

рдХреНрдпрд╛ рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрдЬрд╛рдп рдХрдореНрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдн рд╣реИ? рдпрд╣ рд╢рд╛рдпрдж рдмрд╣рд╕ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рд╣реИред

рдХрдореНрдкреЛрдЬ рдлрд╛рдЗрд▓ рдореЗрдВ рдЗрд╕реЗ рдбрд╛рд▓рдиреЗ рдХрд╛ рдмрдбрд╝рд╛ рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рдзреАрдорд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

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

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

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВред

@dnephin рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдЖрд╡рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред рдореЗрд░рд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЪреАрдЬреЗрдВ рдРрд╕реА рд╣реИрдВ рдЬреЛ рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВ (рдЬреИрд╕реЗ рдПрдЪрдЯреАрдЯреАрдкреА 200 80 рдФрд░ 443 рдпрд╛ рдЯреАрд╕реАрдкреА 5432 рдкрд░) рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рд╢рд┐рдк рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред

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

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

@delfuego : рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрдкрджрд╕реНрде рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реЗ рдХреНрдпрд╛ рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВ? рдХреБрдЫ рдбреЙрдХреНрдЯрд░ / рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ

@Silex https://docs.docker.com/compose/networking рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ?

@ h17liner : рд╣рд╛рдБ, рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ! рдзрдиреНрдпрд╡рд╛рдж

рдЬрдмрдХрд┐ рдореИрдВ @dnephin рд╕реЗ рд╕рд╣рдордд

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

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

@delfuego рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП (# 686) рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рдереЗред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЖрджреЗрд╢ рджреЗрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдореЗрдВ рдХреГрддреНрд░рд┐рдо рд╡рд┐рд▓рдВрдм рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ (рдЬрдм рдХреЛрдИ рдЖрджреЗрд╢ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ)ред рдЬрдмрдХрд┐ рдпреЗ рдЪреАрдЬреЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореБрджреНрджреЗ рд╣реИрдВред

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

рдореЗрд░реЗ рдЖрдИрдлреЛрди рд╕реЗ рднреЗрдЬрд╛ рдЧрдпрд╛

19 рдирд╡рдВрдмрд░, 2015 рдХреЛ рд╕реБрдмрд╣ 8:14 рдмрдЬреЗ, рдбреИрдирд┐рдпрд▓ рдиреЗрдлрд┐рди рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @ithub.com рдиреЗ рд▓рд┐рдЦрд╛:

@delfuego рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП (# 686) рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рдереЗред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЖрджреЗрд╢ рджреЗрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдореЗрдВ рдХреГрддреНрд░рд┐рдо рд╡рд┐рд▓рдВрдм рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ (рдЬрдм рдХреЛрдИ рдЖрджреЗрд╢ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ)ред рдЬрдмрдХрд┐ рдпреЗ рдЪреАрдЬреЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореБрджреНрджреЗ рд╣реИрдВред

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВред

рдореИрдВ рд╡рд┐рдХрд▓реНрдк 4 рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ (рдХреБрдЫ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 3 рдХреА рднрд┐рдиреНрдирддрд╛ рд╣реИ)
рдХрдВрдЯреЗрдирд░ рддрдм рддрдХ рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рдЬрдм рддрдХ рдХрд┐ рд╕рднреА рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХрдорд╛рдВрдб 0 рдПрдЧреНрдЬрд┐рдЯ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреЗред рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП yml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХрдорд╛рдВрдб рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЗрди рдЖрджреЗрд╢реЛрдВ рдХреЛ рдРрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЖрдк рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл "docker exec" рдХреЗ рд╕рд╛рде рдХрд░реЗрдВрдЧреЗред рдХреНрд▓рд╛рд╕рд┐рдХ рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдореЗрдВ setUp () рдФрд░ рдЖрдВрд╕реВрдУрдВ () рдХреЗ рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╣рд╛рдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ "рд╢рдЯрдбрд╛рдЙрди" рдХрдорд╛рдВрдб рднреА рд╣реЛ рд╕рдХрддреА рд╣реИред
рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдЕрдЧрд▓рд╛ рдХрдВрдЯреЗрдирд░ рддрдм рддрдХ рд▓реЙрдиреНрдЪ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╕рднреА рдХрдВрдЯреЗрдирд░ рдирд┐рд░реНрднрд░ рди рд╣реЛрдВред
рдорд╣рд╛рди DockerCon.Eu 2015 рдХреЗ рд▓рд┐рдП PS рдзрдиреНрдпрд╡рд╛рдж

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдПрдХ docker-compose up рдХрдорд╛рдВрдб рдПрдХ рд╕реНрдЯреИрдХ рдХреЛ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╕рдм рдХреБрдЫ рдмрд╕ рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕рднреА рдлреАрдбрдмреИрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрдИ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА "рдПрдХ рдЖрдХрд╛рд░ рд╕рднреА рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИ"ред

рдЖрдк рдХрдИ рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬрд╝ рдХрдорд╛рдВрдбреНрд╕ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ "рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди" рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рд▓рдЪреАрд▓рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ "рдПрдЬреЗрдВрдЯ" рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ рдПрдХрд▓ рдХрд╛рд░реНрдпрдкреБрд╕реНрддрд┐рдХрд╛ рдореЗрдВ рдПрдХ рдПрдХрд▓ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рдЬреЛ рдореЗрд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ (MySQL) рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП 3306 рдкреЛрд░реНрдЯ рдкрд░ рдЪрд▓рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ "рдПрдЬреЗрдВрдЯ" рдХрдВрдЯреЗрдирд░ рдореЗрд░реЗ "db" рдХрдВрдЯреЗрдирд░ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ:

$ docker-compose run --rm agent
Creating db_1

PLAY [Probe Host] *************************************************************

TASK: [Set facts] *************************************************************
ok: [localhost]

TASK: [Message] ***************************************************************
ok: [localhost] => {
    "msg": "Probing db:3306 with delay=0s and timeout=180s"
}

TASK: [Waiting for host to respond...] ****************************************
ok: [localhost -> 127.0.0.1]

PLAY RECAP ********************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0

рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдореИрдВ docker-compose up рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдпрд╣ рдЬрд╛рдирддреЗ рд╣реБрдП рдХрд┐ db рдХрдВрдЯреЗрдирд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪрд╛рд▓реВ рд╣реИред

рдпрд╣рд╛рдБ рдПрдХ рд╕рд░рд▓ docker-compose.yml рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬреЛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ:

...
...
db:
  image: mysql
  hostname: db
  expose:
    - "3306"
  environment:
    MYSQL_DATABASE: xxx
    MYSQL_USER: xxx
    MYSQL_PASSWORD: xxx
    MYSQL_ROOT_PASSWORD: xxx

agent:
  image: cloudhotspot/ansible
  links:
    - db
  volumes:
    - ../../ansible/probe:/ansible
  environment:
    PROBE_HOST: "db"
    PROBE_PORT: "3306"

"рдПрдЬреЗрдВрдЯ" рдХрдВрдЯреЗрдирд░ site.yml /ansible рдорд╛рдЙрдВрдЯ рдХрд┐рдП рдЧрдП рд╡реЙрд▓реНрдпреВрдо рдХреЗ рдирд╛рдо рд╕реЗ рдПрдХ рдкреНрд▓реЗрдмреБрдХ рдЪрд▓рд╛рддрд╛ рд╣реИ, рдЬреЛ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

- name: Probe Host
  hosts: localhost
  connection: local
  gather_facts: no
  tasks: 
    - name: Set facts
      set_fact: 
        probe_host: "{{ lookup('env','PROBE_HOST') }}"
        probe_port: "{{ lookup('env','PROBE_PORT') }}"
        probe_delay: "{{ lookup('env','PROBE_DELAY') | default(0, true) }}"
        probe_timeout: "{{ lookup('env','PROBE_TIMEOUT') | default (180, true) }}"
    - name: Message
      debug: msg="Probing {{ probe_host }}:{{ probe_port }} with delay={{ probe_delay }}s and timeout={{ probe_timeout}}s"
    - name: Waiting for host to respond...
      local_action: >
        wait_for host={{ probe_host }}
        port={{ probe_port }}
        delay={{ probe_delay }}
        timeout={{ probe_timeout }}
      sudo: false

рдПрдХрд▓ docker-compose up рд▓рдХреНрд╖реНрдп рдХрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рдбреЙрдХрдЯрд░ рдХрдВрдкреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП "рд╡рд░реНрдХрдлрд╝реНрд▓реЛ" рд╕реБрд╡рд┐рдзрд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдФрд░ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХрд▓реНрдкрдирд╛ рдлрд╝рд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдХрдорд╛рдВрдбреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдФрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред "рдХрд╛рд░реНрдп" рдЬрд┐рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

# The default workflow, specified tasks will be run before docker-compose up
# The "up" task is implicit and automatically invoked for the default workflow
# The "up" task is explicit for custom workflows as some workflows may not want docker-compose up
default:
  tasks:
    - run --rm agent
    - up

# Custom workflows that can be invoked via a new docker-compose command option
# This example:
# 1. Runs agent container that waits until database container is up on port 3306
# 2. Runs Django database migrations from app container
# 3. Runs Django collect static task from app container
# 4. Runs test container that runs acceptance tests against linked app container
# Does not execute a docker-compose up afterwards

test:
  tasks:
    - run --rm agent 
    - run --rm app manage.py migrate
    - run --rm app manage.py collectstatic --noinput
    - run --rm test

рдЖрдЬ рдореИрдВ рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдкрд░реЛрдХреНрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛрдЬрд╝ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ-рдХреНрд░рдо рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

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

рд╕рд╣рдордд, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд▓реЛрдЧреЛрдВ рдХреЛ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЙрддреНрдкрд╛рджрди рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдбреЙрдХ-рдХрдВрдкреЛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рд╕рдордп рдкрд╣рд▓реЗ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ / рд╣реЗрд▓реНрдо рдЙрд╕ рд▓рдХреНрд╖реНрдп рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реЛрдВред

@olalonde , рдпрдХреАрди рд╣реИ рдХрд┐ рд╣рдо рдЙрддреНрдкрд╛рджрди-рддреИрдпрд╛рд░ рд╣реЛрдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ ... рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдХрдВрдЯреЗрдирд░ рд▓рд┐рдВрдХ рдХреЗ рдЕрдкрд╡рд░реНрдЬрди рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЧрд╛рдпрдм рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЗрд╕реЗ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рджреЛрд╣рд░рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ рдирд┐рд░реНрдорд┐рдд рдиреЗрдЯрд╡рд░реНрдХ рдореЙрдбрд▓ред (рдлрд┐рд░, рд╢рд╛рдпрдж рдпрд╣ рдЕрдиреБрд░реЛрдз рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ - рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрдВрдЯреЗрдирд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдСрд░реНрдбрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ "рдпрд╣рд╛рдВ" рд╣реИ рдпрд╛ рд╕рдорд╕реНрдпрд╛ # 686 ...)

HEALTCHECK рдбреЙрдХрд░ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде, depends_on рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдпрд╛ рддреЛ рдХрдВрдЯреЗрдирд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк (рдХреЛрдИ рд╣реЗрд▓реНрдердХреЗрдпрд░) рдпрд╛ рд╣реЗрд▓реНрдердХреЗрдЪ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд╕рдХрддреА рд╣реИ (рдХреЛрдб 0 рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ)ред рдпрд╣ рдЙрддрдирд╛ рд╣реА рд▓рдЪреАрд▓рд╛ рд╣реИ рдЬрд┐рддрдирд╛ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ (рдЖрдк рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рддрд░реНрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдФрд░ рд╣реЗрд▓реНрдердХреЗрдХ рддрд░реНрдХ рдХреЛ рд░рдЦрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рд╣реЛрддрд╛ рд╣реИ (рдХрдВрдЯреЗрдирд░ рдХреЗ рднреАрддрд░ рдЬреЛ рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ)ред

@ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рднреА, рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕рд╣рд╛рдпрдХ рд╣реЛрдЧреАред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ docker-compose run test рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд┐рдирд╛ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд▓рд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рджрд░реНрджрдирд╛рдХ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рддрд░реАрдХреЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

+1

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

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

@pugnascotia рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдПрдХ рд░рдЪрдирд╛рддреНрдордХ рдЯрд┐рдкреНрдкрдгреА рд╣реИ, рдФрд░ рдПрдХ рдЙрдЪрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг ("рджреЛрдиреЛрдВ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда"?)

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЪрд░реНрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ _originally report_ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ ... рдЬреЛ рдХрд┐ рдХрд┐рд╕реА рд╕реЗрд╡рд╛ рдХреЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИ, рдмрд▓реНрдХрд┐ EXIT рдХреА рд╕реЗрд╡рд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реА рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд╣рд╛рдВ рдореЗрд░реЗ рдкрд╛рд╕ рджреЛ рдХрдВрдЯреЗрдирд░ рд╣реИрдВ рдЬреЛ рд╕рдорд╛рди рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ 15-60 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдЪрд▓рддрд╛ рд╣реИ, рдлрд┐рд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИред рдлрд┐рд░ рджреВрд╕рд░реА рд╕реЗрд╡рд╛ рд╢реБрд░реВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЖрдЬ рдХреА рд░рдЪрдирд╛ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ (рд╕реНрдкрд╖реНрдЯ) рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрдВрджрд░рдЧрд╛рд╣ рд╕рдВрдШрд░реНрд╖ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдЧрд╛ рдФрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рдПрдЧрд╛; 'рдкреБрдирдГ рдЖрд░рдВрдн: рд╣рдореЗрд╢рд╛' рднреА рдПрдХ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред

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

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

@ewindisch рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдмреИрдЪ рдХреА рдиреМрдХрд░рд┐рдпреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрдореНрдкреЛрдЬрд╝ рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдорджрджрдЧрд╛рд░ рд╣реЛрддрд╛ рд╣реИ (рдЗрд╕рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж) рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИ - рдЬреИрд╕реЗ рдХрд┐ рдЪреЗрдиред рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдиреБрдХреНрд░рдордг рдФрд░ IMHO рдХреЛ рдирд╣реАрдВ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ Compose рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ _outside_ рд╣реИ рдФрд░ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдХреЛрдИ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ _inside_ рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреНрдпрд╛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

Compose рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЗрд╕ рднрд╛рдЧ рдореЗрдВ рдпрд╣ рдкреНрд░рд╢реНрди рд╢рд╛рдорд┐рд▓ рд╣реИ рдХрд┐ Compose рдореЗрдВ рдпрд╣ рдХреНрд╖рдорддрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ:

https://docs.docker.com/compose/faq/#how -do-i-get-compose-to-wait-for-my-database-to-be-ready-before-start-my-application

рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрди рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЬрд┐рдХреНрд░ рдирд╣реАрдВ рд╣реИ:

https://docs.docker.com/compose/django/
https://docs.docker.com/compose/rails/
https://docs.docker.com/compose/wordpress/

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

@ewindisch рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВ https://github.com/docker/compose/issues/374#issuecomment -126312313 рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛ - рдЗрд╕ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХреЗ рд╕рд╛рде рдХрд┐ _that_ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдСрд░реНрдбрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг ( рдпрджрд┐ рджреАрд░реНрдШрдХрд╛рд▓реАрди рд▓рдЪреАрд▓рд╛рдкрди рдХреА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ)ред

рдореБрдЭреЗ рдЕрдм рднреА рдЙрд╕ рд╕рдорд╛рдзрд╛рди рд╕реНрдерд╛рди рдХреА рдЦреЛрдЬ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рдЕрдЧрд░ рдХреЛрдИ рдФрд░ рд╣реИред

рдореИрдВ рд╣реВрдБред

рдореИрдВ рднреАред

+1

+3

+1

+1 рдХреЛ https://github.com/docker/compose/issues/374#issuecomment -12631234 рд╕рдорд╛рдзрд╛рди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдПред

рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЙрддреНрдерд╛рди!
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рдкреНрд░рднрд╛рд╡ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди docker рдШрдЯрдирд╛рдУрдВ (рдЬреИрд╕реЗ jwilder / nginx -xy) рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ рд╡рд╣ рдмрд╕ рд╢реНрд░реЛрддрд╛ рдХреЛ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЕрдиреНрдп рд╕рднреА рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдЪрд▓рд╛рддрд╛ рд╣реИ (рдЬреЛ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рдбреЙрдХ-рдХрдВрдкреЛрдЬ рдХреА рд╕рднреА рд╕реБрдВрджрд░рддрд╛ рдХреЛ рдЦрд░рд╛рдм рдХрд░ рджреЗрддрд╛ рд╣реИ)ред

@meetmatt рдХреНрдпрд╛ рдЖрдкрдиреЗ рдмрд╛рдж рдореЗрдВ jwilder / nginx -xy рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ? рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдЖрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдпрд╣ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдореМрдЬреВрджрд╛ (рдЪрд▓ рд░рд╣реЗ) рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдЙрдард╛рдПрдЧрд╛

+1

+1

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

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

рдореБрдЭреЗ рдЧрд┐рдиреЗрдВ, рдирд┐рд╖реНрдкрд╛рджрди рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо рдХрд╛рдо рдкрд░ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рд╣реИред +1

+1

рдореЗрд░рд╛ рдХреБрдЫ рдЫреВрдЯ рд░рд╣рд╛ рд╣реИред

рдХреНрдпреЛрдВ рдХреЛрдИ рдПрдХ "рд╡реЗрдЯрд░ рд░рди (docker рдЗрдВрдЬрди)) рдореЗрдВ" рдкреНрд░рддреАрдХреНрд╖рд╛ рддрдХ "рдЬреЛрдбрд╝рдиреЗ рдХреА рд╡рдХрд╛рд▓рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ, рдЖрд╢реНрд░рд┐рдд рдХрдВрдЯреЗрдирд░ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ "рддреИрдпрд╛рд░" рдХрдм рд╣реБрдЖ рд╣реИ рд▓реЗрдХрд┐рди рдбреЙрдХрдЯрд░ рдЗрд╕рдХрд╛ рд╕рдореНрдорд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореВрд▓ рдорд╛рдорд▓реЗ рдореЗрдВ (mysql рдПрдХ рдмрдбрд╝рд╛ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдФрд░ рдЕрд▓реНрдлреНрд░реЗрд╕реНрдХреЛ рд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реИ), mysql рдХрдВрдЯреЗрдирд░ рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рд╕рд┐рдЧреНрдирд▓ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдпрд╣ рддреИрдпрд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рддрдм рддрдХ рдЕрд▓реНрдлреНрд░реЗрд╕реНрдХреЛ рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдореИрдВ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рддрд░реНрдХ рдФрд░ рд╕рдВрдХреЗрдд рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬрдм рдореИрдВ рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рдКрдВрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЬреИрд╕реЗ рдХрд┐ рдЬрдм рд▓реЙрдЧ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ -> рд╕рд┐рдЧреНрдирд▓ CONTAINER_UP)ред

net: "container:[name or id]" рдореЗрд░реЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХрд╛ рдЖрджреЗрд╢ рдХреНрдпреЛрдВ рдирд╣реАрдВ? рдореБрдЭреЗ links рдЧрд┐рд░рд╛рдирд╛ рдкрдбрд╝рд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрджрд╛рд╡рдирдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдкреВрд░реЗ рд╕реНрдЯреИрдХ net: "host" рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ links рд╕рд╛рде рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдмреВрдЯ рдСрд░реНрдбрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ рдпрд╛ рдореБрдЭреЗ рдЙрдирдХреЗ рдмреАрдЪ рдмреЗрдХрд╛рд░ рд╡реЙрд▓реНрдпреВрдо рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛?

рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ:

рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл links рдмрдЬрд╛рдп рдмреЗрдХрд╛рд░ рд╡реЙрд▓реНрдпреВрдо рдХреЗ рд╕рд╛рде рд░реА-рдСрд░реНрдбрд░ рдХрд┐рдпрд╛:

base:
  build: ./base
  net: "host"
  volumes:
    - /root/lemp_base
phpmyadmin:
  build: ./phpmyadmin
  net: "host"
  volumes_from:
    - base
  volumes:
    - /root/lemp_phpmyadmin
ffmpeg:
  build: ./ffmpeg
  net: "host"
  volumes_from:
    - phpmyadmin
  volumes:
    - /root/lemp_ffmpeg
mariadb:
  build: ./mariadb
  net: "host"
  volumes_from:
    - ffmpeg
  volumes:
    - /root/lemp_mariadb
php:
  build: ./php
  net: "host"
  volumes_from:
    - mariadb
  volumes:
    - /root/lemp_php
nginx:
  build: ./nginx
  net: "host"
  volumes_from:
    - php
  volumes:
    - /root/lemp_nginx

(рдореИрдВрдиреЗ рд╕реНрдЯреИрдХ рд╕реЗ рдЕрдиреНрдп рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╕рд╛рдл рдХрд┐рдпрд╛ рдФрд░ рдХрдВрдЯреЗрдирд░_рдирд╛рдо рдЬреИрд╕реЗ рдЕрдиреНрдп рдЗрдиреНрдлреЛрд╕, рд╕рд░рд▓ рджрд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯред)

рдЕрдЧрд░ рдореИрдВ net: "container:base рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ docker-compose build рдХрдорд╛рдВрдб рдкрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдорд┐рд▓рд╛ рд╣реИред

ERROR: Service "mariadb" is trying to use the network of "lemp_base", which is not the name of a service or container.

рдХреНрдпрд╛ рдореИрдВ рдирд╣реАрдВ рдХреА рддрд░рд╣ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рд╣реИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдХрд┐ рд╣рд░ рджреВрд╕рд░реЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╡реЗрдмрд╕рд░реНрд╡рд░ рдлрд╝рд╛рдЗрд▓реЗрдВ рдорд┐рд▓ рдЧрдпрд╛ рд╣реЛрдЧрд╛ /var/www рд╕реЗ рдлрд╝реЛрд▓реНрдбрд░ base ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдпрд╣ рд╕реНрдЯреИрдХ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдкреВрд░реЗ /var/www рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╣рдЯрд╛ рд░рд╣рд╛ рд╣реИред

рдореЗрд░рд╛ рд╡рд┐рдирдореНрд░ рдордд рд╣реИ рдХрд┐ рдбреЙрдХрдЯрд░ рдХрдореНрдкреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рддрдВрддреНрд░ рд╕реЗрдкрд░реЗрд╢рди рдСрдл рдХрдВрд╕рд░реНрди рдХреЗ рдЦрд┐рд▓рд╛рдл рдЬрд╛рддрд╛ рд╣реИред Docker Compose рд░рдирд┐рдВрдЧ рдХрдВрдЯреЗрдирд░реНрд╕ A рдФрд░ B рдХрдВрдЯреЗрдирд░реНрд╕ рдХреЗ рд╕рд╛рде рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред A рдФрд░ B рдЕрдкрдиреА рд╕рд░реНрд╡рд┐рд╕ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред рдпрджрд┐ B рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП A рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ B рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╣реИ рдХрд┐ рд╡рд╣ A рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдХрд┐ рд╡рд╣ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реЛред рдЬреИрд╕рд╛ рдХрд┐ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдЯрд╛рдЗрдордЖрдЙрдЯ, рд░рд┐рдЯреНрд░реА рдпрд╛ рдЬреЛ рднреА рд╣реЛ, рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмреА рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рди рдХрд┐ рдбреЙрдХрд░ рдХрдВрдкреЛрдЬ рдФрд░ рди рд╣реА рдПред рдПрд╕ред рд╕реАред рд╕реЗрд╡рд╛ рдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдФрд░ рдЙрдЪрд┐рдд рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡реЛрдкрд░рд┐ рд╣реИред

рдХреНрдпрд╛ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ 3 @aanand рдкрд░ рдХреЛрдИ рдХрд╛рдо рд╣реИ? рдпрд╣ рдЬрд╛рдирдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рд╣реИ, рдпрд╣ рдПрдХ рдЖрд╢рд╛рдЬрдирдХ рд╢реБрд░реБрдЖрдд рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдЬреЛ рдПрдХ рд╕рдВрдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рди рд╣реЛрдиреЗ рдкрд░ рднреА рдХреБрдЫ рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред

+1

+1

рд╢рд╛рдпрдж рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рд▓реЗрдХрд┐рди args: buildno: рдХрдВрдЯреЗрдирд░ рдХреЛ docker-compose.yml 2 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдСрд░реНрдбрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рдРрд╕реА рдЪрд┐рдВрддрд╛ рд╣реИ рдЬреЛ рдХрдВрдкреЛрдЬрд╝ рдореЗрдВ рдирд╣реАрдВ рд╣реИред @jwilder рдХреЗ рдЙрддреНрдХреГрд╖реНрдЯ рдбреЙрдХрд░реАрдЬрд╝ рдХреЛ рдЖрд╢реНрд░рд┐рдд рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдорд┐рд▓рд╛ рдФрд░ рдЖрдк рдЙрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ / рдкреЛрд░реНрдЯ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕ рдкрд░ рдЖрдк рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ рдХрд┐ рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЗ рд╣реИрдВ:

api:
  build: .
  ports:
   - "8000:80"
  expose:
  - "80"

test:
  build: test
  command: dockerize -wait http://api:80 -wait tcp://db:5432 somecommand -some arg -another arg2
  links:
    - api:api

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрдВрддрдЬрд╛рд░ рд░рдЪрдирд╛ рдХреЗ рдмрд╛рд╣рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдкрдиреЗ рджреЗрд╡ рдореЗрдВ рдореИрдВ @mefellows рдХреЗ рд╕реБрдЭрд╛рдП рдЧрдП рд╣рд╛рдЗрдмреНрд░рд┐рдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╕реНрдерд┐рддрд┐ рдкреГрд╖реНрда timercheck.io ред рдореИрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рдорд┐рд▓реЗрдЧрд╛ рдЬреЛ рдореБрдЭреЗ рдЦрд░рдЧреЛрд╢рдмреИрдВрдХ рдпрд╛ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЬрд▓реНрджрдмрд╛рдЬреА рдХреЗ рдмрд┐рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣рдо рдПрдХ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ

#!/usr/bin/env bash

# wait for db to come up before starting tests, as shown in https://github.com/docker/compose/issues/374#issuecomment-126312313
# uses bash instead of netcat, because netcat is less likely to be installed
# strategy from http://superuser.com/a/806331/98716
set -e

echoerr() { echo "$@" 1>&2; }

echoerr wait-for-db: waiting for db:5432

timeout 15 bash <<EOT
while ! (echo > /dev/tcp/db/5432) >/dev/null 2>&1;
    do sleep 1;
done;
EOT
RESULT=$?

if [ $RESULT -eq 0 ]; then
  # sleep another second for so that we don't get a "the database system is starting up" error
  sleep 1
  echoerr wait-for-db: done
else
  echoerr wait-for-db: timeout out after 15 seconds waiting for db:5432
fi

exec "$@"

рдпрд╣ рдЖрдЧрд╛рдореА (рдФрд░ рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдбреЙрдХреНрд╕ рдЕрдкрдбреЗрдЯ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рдЖрд╕рдиреНрди) depend_on , рд╣рд╛рдБ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдирд╣реАрдВред depends_on рдХреЗрд╡рд▓ рдСрд░реНрдбрд░ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдФрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдореЗрдВ рджреЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬрдм рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдиреЗ рдЦреБрдж рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реВрдк рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реЛред

рдЖрд╣, рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред =)

рд╢рд╛рдпрдж рдпрд╣ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ http://www.onegeek.com.au/articles/waiting-for-dependencies-in-docker-compose

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

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

@realulim рдЕрдЪреНрдЫрд╛

рдпрд╣ рд╡рд╣реА рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВ рдЖрдпрд╛ рдерд╛, рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ;

until netcat -z -w 2 database 5432; do sleep 1; done
# do the job here, database host on port 5432 accepts connections

@kulbida ,
рдореИрдВ MySQL рдХреЗ рд╕рд╛рде рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ "рдбреЗрдЯрд╛рдмреЗрд╕" рдПрдХ рд░рдЪрдирд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдХрдбрд╝реА рд╣реИред

if [[ "$APP_ENV" == "local" ]]; then
    while ! mysqladmin ping -h database --silent; do
        sleep 1
    done
    # Load in the schema or whatever else is needed here.
fi

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

рдЕрдм рдРрдк рдХрд╛ рдПрд░рд░ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд▓реЙрдЬрд┐рдХ рд╕реЗ рдХрд╛рдлреА рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

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

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

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

рд╕реНрд╡рд╛рд╕реНрдереНрдп рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддрд╛рд╡ https://github.com/docker/docker/issues/21142 рдореЗрдВ docker engine repo рдкрд░ рдЪрд░реНрдЪрд╛ рд╢реБрд░реВ рд╣реЛ рд░рд╣реА рд╣реИред рдПрдХ рдмрд╛рд░ рдЬрдм рдпрд╣ рд╕рдорд░реНрдерди рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрдВрдкреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рдФрд░ рд╡рд┐рд▓рдВрдмрд┐рдд рд╕реНрдЯрд╛рд░реНрдЯ рдЕрдк рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ?

ready_on: /tmp/this_container_is_up_and_ready

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

рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд░реНрдерди рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛; рдЗрд╕ рдмреАрдЪ рдпрд╣рд╛рдБ рд╣реИрдХ рдореБрдЭреЗ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬрд╝ рд╕реЗрдЯрдЕрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЛ рдорд┐рд▓рд╛:

    nginx:
        image: nginx:latest
        command: /bin/bash -c "sleep 2 && echo starting && nginx -g 'daemon off;'"
        ...

(рдЙрддреНрдкрд╛рджрди рдореЗрдВ, рдореЗрд░рд╛ рдРрдк рд╕реНрдерд╛рдиреАрдп рджреЗрд╡ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ proxy_pass рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рдЪрд▓ рд░рд╣реЗ рдЕрдкрд╕реНрдЯреНрд░реАрдо рд╕рд░реНрд╡рд░реЛрдВ рдХреЛ рд╕рдореНтАНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдЗрдирдореЗрдВ рд╕реЗ рдбреЙрдХ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ nginx рдХреЛ рдЗрдирдХреЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЕрдиреНтАНрдпрдерд╛ рдпрд╣ рдХреНрд░реИрд╢ рдФрд░ рдорд░ рдЬрд╛рддрд╛ рд╣реИред daemon off рдЪреАрдЬ рдПрдХ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ nginx рд░рдЦрддреА рд╣реИ, рдЕрдиреНрдпрдерд╛ рдбреЙрдХрдЯрд░ рдЬреИрд╕реЗ рд╣реА рдХрдВрдЯреЗрдирд░ рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛, рдЬрдм рддрдХ рдХрд┐ рдкреЗрд░реЗрдВрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЙрд╕рдХреЗ рдбреЗрдореЙрди рдмрдЪреНрдЪреЗ рдХреЛ рдЬрдиреНрдо рдирд╣реАрдВ рджреЗрддреАред "

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

рд╣рдорд╛рд░реЗ рдЬреЗрдирдХрд┐рдиреНрд╕ CI рд╕рд░реНрд╡рд░ рдиреЗ рдбреЙрдХрдЯрд░ рдХрдореНрдкреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдлреИрд▓рд╛рдпрд╛ рдФрд░ рдлрд┐рд░ рдореБрдЦреНрдп рдХрдВрдЯреЗрдирд░ рдХреЗ рднреАрддрд░ рд╕реЗ ANT рдХреЛ рдЪрд▓рд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ:

docker-compose up -d
docker exec -it projectx-fpm-jenkins ant -f /var/www/projectX/build.xml

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

version: '2'
services:
  nginx:
    build: ./docker/nginx
    depends_on:
      - fpm
  fpm:
    build: ./docker/fpm
    depends_on:
      - mysql
  mysql:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=projectx
      - MYSQL_DATABASE=projectx

рд▓реЗрдХрд┐рди рдЖрдк ANT рдЯрд╛рд╕реНрдХ рдХреЗ рджреМрд░рд╛рди рдЗрд╕рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

<!-- other targets... -->

<target name="setup db">
    <!-- wait until the 3306 TCP port in the "mysql" host is open -->
    <waitfor>
        <socket server="mysql" port="3306"/>
    </waitfor>

    <exec executable="php">
        <arg value="${consoledir}/console"/>
        <arg value="doctrine:database:create"/>
        <arg value="--no-interaction"/>
    </exec>
</target>

@kulbida рдиреЗ рдЬреЛ рдЪрд╛рд▓

while ! nc -w 1 -z db 5432; do sleep 0.1; done

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

  1. docker-compose рдирд┐рд░реНрднрд░рддрд╛ рдХреНрд░рдо рдореЗрдВ рд╕реЗрд╡рд╛рдПрдВ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, db рдФрд░ redis рд╡реЗрдм рд╕реЗ рдкрд╣рд▓реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  2. рдбреЙрдХ-рдХрдВрдкреЛрдЬрд╝ рдЕрдк рд╕реЗрд╡рд╛ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реЗрд╡рд╛ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧреАред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдбреЙрдХ-рдХрдореНрдкреЛрдЬрд╝ рдЕрдк рд╡реЗрдм рднреА рдбреАрдмреА рдФрд░ рд░реЗрдбрд┐рд╕ рдмрдирд╛рдПрдЧрд╛ рдФрд░ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ред

рд╕рдВрд╕реНрдХрд░рдг 2'
рд╕реЗрд╡рд╛рдПрдВ:
рд╡реЗрдм:
рдмрд┐рд▓реНрдб:ред
рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ:
- рдбреА.рдмреА.
- рд░реЗрдбрд┐рд╕
Redis:
рдЫрд╡рд┐: рд░реЗрдбрд┐рд╕
db:
рдЫрд╡рд┐: рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЯреНрд╕

@alexch : рдЧреНрд░рд╛рд╣рдХ рдХреА рдУрд░ рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдг (рдорд╛рдЗрдХреНрд░реЛ-рд╕рд░реНрд╡рд┐рд╕ nginx + рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реВрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛)ред Dockerized nginx рдкрд░реАрдХреНрд╖рдг - рдмрд╣реБрдд рдЙрдЪреНрдЪ рд╕реЗ рд▓реЛрдб рдХреЗ рдХрд░реАрдм рд╢реВрдиреНрдп рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ 1-2 рдорд┐рдирдЯ рджреЛрд╣рд░рд╛ рд░рд╣рд╛ рдерд╛ред рдЕрдВрдд рдореЗрдВ рд╡реАрдПрдо рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдЧреИрд░-рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрдб рдирдЧреНрдиреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЬрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ (рд╕рд┐рд░реНрдл рд╡рд┐рд╢рд╛рд▓ рдкреНрд░рджрд░реНрд╢рди рдЕрдВрддрд░ рдХреЗ рдХрд╛рд░рдг), рд╢рд╛рдпрдж рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдбреНрд░рд╛рдЗрд╡рд░ рдкреНрд▓рдЧрдЗрди / libNetwork рд╕рдорд╕реНрдпрд╛ред

@syamsathyan depends_on рдорджрдж рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

@skorokithakis , @kulbida рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдХрд┐рд╕реА рднреА рд╕реЗрд╡рд╛ рдореЗрдВ netcat рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕реЗ рдореБрдЭреЗ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ( postgres )ред рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ?

@nottrobin рдореБрдЭреЗ рдбрд░ рдирд╣реАрдВ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреА рдЫрд╡рд┐ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ: /

@nottrobin рдореЗрд░реА рдЯреАрдо рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ, рдЖрдкрдХреЛ рдПрдХ-рджреЛ рджрд┐рди рдореЗрдВ

рд╣рд╛рд▓ рдХреЗ рдмреИрд╢ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рдиреЗрдЯрдХреИрдЯ-рдореБрдХреНрдд рд╕рдорд╛рдзрд╛рди рд╣реИ (рдЗрд╕рд╕реЗ рдкреНрд░реЗрд░рд┐рдд: http://stackoverflow.com/a/19866239/1581069):

while ! timeout 1 bash -c 'cat < /dev/null > /dev/tcp/db/5432'; do sleep 0.1; done

рдпрд╛ рдХрдо рд╡рд░реНрдмреЛрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг:

while ! timeout 1 bash -c 'cat < /dev/null > /dev/tcp/db/5432' >/dev/null 2>/dev/null; do sleep 0.1; done

@typekpb рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!

рдЕрдм рдЙрд╕ HEALTHCHECK рд╕рдорд░реНрдерди рдХреЛ https://github.com/docker/docker/pull/23218 рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдорд┐рд▓рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдпрд╣ рддрдм рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдСрд░реНрдбрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╕реНрд╡рд╕реНрде рд╣реЛред рдкрд╣реЗрд▓реА рдХрд╛ рдЖрдзрд╛ рд╣рд▓ :)

рдЕрдм рдЬрдм HEALTHCHECK рд╕рдорд░реНрдерди рдХреЛ docker / docker # 23218 рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдорд┐рд▓рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдСрд░реНрдбрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╕реНрд╡рд╕реНрде рд╣реИ рдпрд╛ рдирд╣реАрдВред рдкрд╣реЗрд▓реА рдХрд╛ рдЖрдзрд╛ рд╣рд▓ :)

рдЕрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред docker-compose.yml рдкрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП?

рдЕрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕реЗ docker-compose.yml рдкрд░ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ?

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

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

рдореИрдВрдиреЗ рдПрдХ js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд┐рдЦреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ .waitForPort() рддрд░реАрдХрд╛ рд╣реИред рдЬреИрд╕рд╛ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣ рд╕рднреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдореЗрд░рд╛ рдмреНрд▓реЙрдЧ рджреЗрдЦреЗрдВ

HEALTHCHECK рдорд░реНрдЬ рдмрдбрд╝реА рдЦрдмрд░ рд╣реИред

рдЗрд╕ рдмреАрдЪ, рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдорд╕реНрдпрд╛ рдФрд░ рдХреБрдЫ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред

рдпрд╣реА рдХреНрдпрд╛ рдХрдо рд╣реИ?

https://docs.docker.com/compose/startup-order/

@pablofmorales рдирд╣реАрдВрдВ, рдХреНрдпреЛрдВрдХрд┐ depends_on рд╕рд┐рд░реНрдл рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрдВрдЯреЗрдирд░ рдКрдкрд░ рд╣реИред

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

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

рдЬрдм рдПрдХ рдХрдВрдЯреЗрдирд░ "рдЕрдк" рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдкреНрд░рднрд╛рд╡ рдХреЗрд╡рд▓ рдЙрд╕реА рдкрд░ рдкрдбрд╝рддрд╛ рд╣реИред READY_ON рдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдХреЗрд╡рд▓ "рдЕрдк" рдХреЗ рд░реВрдк рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ 90% рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╣рд░ рдХреЛрдИ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ "рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ" рдХреЛ 2 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдПрдХ рдореЗрдВ рд╕рдореЗрдЯрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИред рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рдХрддрд╛рдИ рдХрд░рддреЗ рд╕рдордп рдШрдЯрдирд╛рдУрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП "рддреИрдпрд╛рд░" рд╣реИ, рджреВрд╕рд░рд╛ "рд╕реНрд╡рд╛рд╕реНрдереНрдп" рд╣реИ рддрд╛рдХрд┐ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рдКрдкрд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХреЗред

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

Healthcheck рдХреЗ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрдВрдЯреЗрдирд░рдкрд┐рд▓реЙрдЯ рдЬреИрд╕реА рдЪреАрдЬрд╝ рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рди рдХреЗрд╡рд▓ рд╕реНрд╡рд╛рд╕реНрдереНрдп, рдмрд▓реНрдХрд┐ рд╕реЗрд╡рд╛ рдЦреЛрдЬ рдФрд░ рдирд┐рдЧрд░рд╛рдиреА рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред https://github.com/joyent/containerpilot

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

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

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

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдХрд╛рдБрдЧ рдПрдкреАрдЖрдИ рдЧреЗрдЯрд╡реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ

рдХреЛрдиреНрдЧ рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдХреИрд╕реЗрдВрдбреНрд░рд╛ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ

while true; do
    CHECK=`kong-database/check`
    if [[ $CHECK =~ "system.dateof" ]]; then
        break
    fi
    sleep 1;
done

рдЪреЗрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдпрд╣ рд╣реЛрддрд╛ рд╣реИ

#!/bin/bash
docker cp cassandra-checker kong-database:/root/
docker exec -i kong-database cqlsh -f /root/cassandra-checker

рдХреИрд╕реЗрдВрдбреНрд░рд╛-рдЪреЗрдХрд░ рд╕рд┐рд░реНрдл рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреНрд╡реЗрд░реА рд╣реИ

SELECT dateof(now()) FROM system.local ;

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

рдпрд╣ рд╕рдЪ рд╣реИ, рддреБрдо рд╕рд╣реА рд╣реЛред

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

рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдСрдкреНрдЯ-рдЗрди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреА рдХреЛрдИ рдмрд╛рдзреНрдпрддрд╛ рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдк рдпрд╣ рдХрд╣рдиреЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред

рдПрдХ tcp рдкреЛрд░реНрдЯ рд╕реБрдирдиреЗ рдореЗрдВ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реЗрдЯрдЕрдк рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдирд░рдХ, рдпрджрд┐ рдЖрдк рдПрдХ рдкреЛрд╕реНрдЯрдЧреНрд░реИрдЬ рдХрдВрдЯреЗрдирд░ рд╕реЗ рднреА рдЬрд▓реНрджреА рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ tcp рдкрд░ рднреА, рдЖрдкрдХреЛ рдпрд╣ рдмрддрд╛рддреЗ рд╣реБрдП рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА рдХрд┐ db рдЕрднреА рддрдХ рдЦреЛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИред

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

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

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

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

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

рдПрдХ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рдорд▓рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрд╕ рд╣реЛрд╕реНрдЯ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╢реЗрдл рдпрд╛ рдЕрдирд╕рд┐рдПрдмрд▓ рд░рди рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реЛрдЧрд╛ рдФрд░ рдлрд┐рд░ рдлрд╛рдЗрд▓ рд▓рд┐рдЦреЗрдВред

рдпрджрд┐ рдпрд╣ рдбреЙрдХ-рд╕рд╛рдЗрдб рдЪреЗрдХ рдХрд╛ рд╕рд╡рд╛рд▓ рд╣реИ, рддреЛ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ;

UPCHECK --port=7474 --interval=0.5s --response="Please log in"

рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдмрд╣реБрдд рдпреЛрдЧреНрдпрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рднреА рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИред
80% рд╕рдордп, рдЯреАрд╕реАрдкреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рд╕реЗ рдареАрдХ рдХрд╛рдо рд╣реЛрдЧрд╛ред

рдЕрдЪреНрдЫрд╛ ... рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ:

UPCHECK --file=/tmp/container_is_ready --interval=0.5s --timeout=2m

рдмрд╕ рд╡рд╣реА рд╣реИред

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬ рдХреЗ рдкреБрди: рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрд╣ libcompose рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ docker рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ) рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд┐рдЧ рдХрдорд╛рдВрдб рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЗрд╕реЗ рдпрд╣рд╛рдБ рджреЗрдЦреЗрдВ: https://github.com/dansteen/controlled-compose

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

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

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

+1

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рд╕реЗрд╡рд╛ рдХреЛ рдЖрдк рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕реЗ рдпрд╣ рддрдп рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рд╡рд╣ рддреИрдпрд╛рд░ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдХрд┐ рд╡рд╣ рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП PHP рдЕрдиреБрдкреНрд░рдпреЛрдЧ MySQL рдХреЗ рдХрдиреЗрдХреНрд╢рди рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП PHP рдХрдВрдЯреЗрдирд░ рдХреЗ ENTRYPOINT рдкрд░, рдореИрдВрдиреЗ рдХреБрдЫ рдРрд╕рд╛ рд▓рд┐рдЦрд╛ред

#!/bin/bash
cat << EOF > /tmp/wait_for_mysql.php
<?php
\$connected = false;
while(!\$connected) {
    try{
        \$dbh = new pdo( 
            'mysql:host=mysql:3306;dbname=db_name', 'db_user', 'db_pass',
            array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
        );
        \$connected = true;
    }
    catch(PDOException \$ex){
        error_log("Could not connect to MySQL");
        error_log(\$ex->getMessage());
        error_log("Waiting for MySQL Connection.");
        sleep(5);
    }
}
EOF
php /tmp/wait_for_mysql.php
# Rest of entry point bootstrapping

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

рдирдмрд┐рди рдиреЗрдкрд╛рд▓ рд╕реНрдХреНрд░реАрдм:

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рд╕реЗрд╡рд╛ рдХреЛ рдЖрдк рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕реЗ рдпрд╣ рддрдп рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рд╡рд╣ рддреИрдпрд╛рд░ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдХрд┐ рд╡рд╣ рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ рдпрд╛ рдирд╣реАрдВред

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

рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╢рд┐рд▓реНрдк рдХреМрд╢рд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
"рдХрдВрдЯреЗрдирд░ рд░реЗрдбреАрдиреЗрд╕ рдПрд╕рдкреАрдЖрдИ", рдЬрд┐рд╕реЗ рдХрдВрдЯреЗрдирд░ рдбреЗрд╡рд▓рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдкрд░
рджреВрд╕рд░реА рддрд░рдл "рдХрдВрдЯреЗрдирд░ рд░реЗрдбреАрдиреЗрд╕ рдПрдкреАрдЖрдИ" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдХрд┐
рд╕реЗрд╡рд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрд▓рд░рд┐рдЪ

@realulim рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ MySQL рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдпрд╛ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рджреЛрд╣рд░рд╛рдпрд╛ рдпрд╛ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдкрд░рд┐рд╡рд░реНрддрди DB_HOST, DB_NAME, DB_USER рдФрд░ DB_PASSWORD рдЬреИрд╕реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдЗрдиреНрд╣реЗрдВ ARG (рддрд░реНрдХ) рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рднреА рд╕рдВрдмрдВрдзрд┐рдд рдХрдВрдЯреЗрдирд░ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк docker-compose.yml рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рд╡рд░реНрддрди рдПрдХ рдлрд╝рд╛рдЗрд▓ рдкрд░ рд╣реЛрддрд╛ рд╣реИред

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

рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб until nc -z localhost 27017; do echo Waiting for MongoDB; sleep 1; done

@ piotr-s-brainhub рдКрдкрд░ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЦреБрд▓реЗ рдмрдВрджрд░рдЧрд╛рд╣ рд╣реЛрдиреЗ рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реЗрд╡рд╛ рддреИрдпрд╛рд░ рд╣реИред

рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддрддреНрдкрд░рддрд╛ рдХреА рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕реНрдерд┐рддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рд▓реЙрдЧ, рдкреЛрд░реНрдЯ рдЦреЛрд▓рдиреЗ рдпрд╛ рд╕рдордп рдХреА рджреЗрд░реА рд╕реЗ рд╢реБрд░реВ рд╣реЛ рд╕рдХрддреА рд╣реИ? рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

ready_when:
  in_logs: `MySQL init process done`
  ports_open:
  - 3306

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

рдиреЛрдЯ: рдореИрдВ рдПрдХ рдордЬрдмреВрдд рд╕реЗрд╡рд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдорд╣рддреНрд╡ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ рдЬреЛ рдЙрд╕ рд╕рдордп рднреА рдЪрд▓ рд╕рдХрддреА рд╣реИ рдЬрдм рдЗрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИрдВред рдпрд╣ рд╕рд╡рд╛рд▓ рдирд╣реАрдВ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕реЗ рдЖрдЬрдХрд▓ рдПрдХ рдЯреВрд▓ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рдерд╛: https://github.com/betalo-sweden/await

рдпрд╣ рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рджреА рдЧрдИ рд╕реВрдЪреА рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЬреЛ рдЖрдк рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рд░рдЦреЗрдВ, рдпрд╛ рддреЛ рдЕрдЧрд▓реЗ рдЖрджреЗрд╢ рдкрд░ рдЬрд╛рдХрд░ рдпрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░рдХреЗред

@djui , рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╕рдордп рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?

@derekmahar рдпрд╣ рдорддрджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ 60 рд╕реЗрдХрдВрдб рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╣реИред рд╣рд░ рдмрд╛рд░ рдпрд╣ рд╕рдВрд╕рд╛рдзрди рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛, рдпрд╣ рд╕рд┐рд░реНрдл 1s рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдкреБрди: рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рд╕рдорд╡рд░реНрддреА рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрдиреБрдХреНрд░рдорд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:

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

рдпрд╣рд╛рдБ рдПрдХ рдирдпрд╛ рддрд░реАрдХрд╛ рд╣реИ рдбреЙрдХрд░ рд╣реЗрд▓реНрде рдбрд╛рдпрд░реЗрдХреН рдЯ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛:

https://gist.github.com/mixja/1ed1314525ba4a04807303dad229f2e1

[рдЕрджреНрдпрддрди: рдХрдВрдЯреЗрдирд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбреЙрдХрд░ рез.резреи рдХреБрдЫ рд╣рдж рддрдХ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рддрд░реАрдХреЗ рд╕реЗ рд░реЛрдХрд╛ рдХрдВрдЯреЗрдирд░ рдкрд░ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдкрд░реАрдХреНрд╖рдг рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ "]

рдзрдиреНрдпрд╡рд╛рдж @ рдорд┐рдХреНрд╕рдЬрд╛ , рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рдиред

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

рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдореИрдВ https://github.com/avast/docker-compose-gradle-plugin рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдбреЙрдХрд░ рд╣реЗрд▓реНрдердЪреЗрдХ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рдХреЛрдИ рдЕрдзрд┐рдХ рдХреГрддреНрд░рд┐рдо рдард╣рд░рд╛рд╡ рдирд╣реАрдВ, рддреЗрдЬреА рд╕реЗ рдмрдирд╛рддрд╛ рд╣реИред

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

@ рдорд┐рдХреНрд╕рдЬрд╛ рдареАрдХ рд╣реИ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЖрдк рд╕рд╣реА рд╣реЛрдВред рд▓реЗрдХрд┐рди рдЬрд┐рддрдиреЗ рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдмрддрд╛рдпрд╛ рд╣реИ, рдПрдХ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЬрдм рдЖрдкрдХреЗ рдЯреВрд▓рдмреЙрдХреНрд╕ рдореЗрдВ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬ рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

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

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

@mixja @korya рдореИрдВ рдЕрдкрдиреЗ рдЙрдкрдХрд░рдг рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдЗрдВрддрдЬрд╛рд░ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдкреВрдЫрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк Makefile рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреНрдпрд╛ рдкреНрд░рд╛рд╡рдзрд╛рди рд╣реИ рдХрд┐ рд▓рд╛рдкрддрд╛ рд╣реИ / рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ / рдЕрдзрд┐рдХ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣рддреЗ рд╣реИрдВ await ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Healthcheck + рдореЗрдХ рд╡рд░реНрдЬрди рдПрдХ "рд╡реИрд╢реНрд╡рд┐рдХ" рджреГрд╢реНрдп рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдХреЛрдИ рднреА рдХрдВрдЯреЗрдирд░ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ (рд▓реЗрдХрд┐рди рдореЗрдХрд╛рдЗрд▓ рдХрд░рддрд╛ рд╣реИ) рдФрд░ await рдПрдХ "рд╕реНрдерд╛рдиреАрдп" рджреГрд╢реНрдп рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рд╕рдХреНрд╖рдо рдХрдВрдЯреЗрдирд░ рдЬрд╛рдирддрд╛ рд╣реИ (рдХреЗрд╡рд▓) рдЗрд╕реЗ depends_on рдпрд╛ links рд╕рдорд╛рди рдЬрд╛рдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЖрдк рдХрдВрдЯреЗрдирд░ рдХреЛ рд╣реЗрд▓реНрдердЪреЗрдХ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рд╢рд┐рдк рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ (рдЬреЛ рдХрднреА-рдХрднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕реЗред mysqlshow ) рдФрд░ рдЕрдиреНрдпрдерд╛ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдХреЛ рдЕрдЫреВрддрд╛ рдЫреЛрдбрд╝ рджреЗрдВред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЖрдк рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд▓рдЪреАрд▓реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ docker-compose up -d mysql docker run -d -e ... -v ... -p ... mysql рдмрд░рд╛рдмрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред

рд╣рд╛рдп @djui - рдпрд╣ рд╢рд╛рдпрдж рдПрдХ рджрд╛рд░реНрд╢рдирд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ HEALTHCHECK рдХрд╛ рдкреВрд░рд╛ рдЖрдзрд╛рд░ рд╕рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗ рд░рд╣рд╛ рд╣реИ - рдпрд╛рдиреА рдПрдХ рдХрдВрдЯреЗрдирд░ рдХрдВрдЯреЗрдирд░ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХрд╛ рдПрдХ рд╕рд╛рдзрди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдХрд┐рд╕реА рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗред

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

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

рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рджреГрд╢реНрдп рдХреЗ рд░реВрдк рдореЗрдВ AWS CloudFormation рдФрд░ рдСрдЯреЛрд╕реНрдХреЛрд▓рд┐рдВрдЧ рд╕рдореВрд╣реЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдФрд░ рд░реЛрд▓рд┐рдВрдЧ рдЕрдкрдбреЗрдЯ рдХреЛ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдХреНрд▓рд╛рдЙрдбрдлрд╛рд░реНрдо рдХреИрд╕реЗ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг "рд╕реНрд╡рд╕реНрде" рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ рдФрд░ рд╣рдо рдПрдХ рдкреБрд░рд╛рдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдорд╛рд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдирдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд░реЛрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рд╣рдо рдПрдХ рдмрд╛рд╣рд░реА рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдпрд╛ рдХреНрдпрд╛ рд╣рдо рд╕реНрд╡рд╛рд╕реНрдереНрдп рдкрд░ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВ? рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рд╕реНрд╡рд╛рдореА рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬреЛ рднреА рд╕рдлрд▓рддрд╛ рдорд╛рдирджрдВрдб рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрд╕реЗ рд╕реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдУрд╡рд░рдЪрд┐рдВрдЧ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рд╕рд┐рд╕реНрдЯрдо (рдпрд╛рдиреА рдХреНрд▓рд╛рдЙрдбрдлрд╝реЙрд░реНрдореЗрд╢рди) рдХреЛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдг "рд╕реНрд╡рд╕реНрде" рд╣реИред

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

@ рдорд┐рдХреНрд╕рдЬрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ

рдореБрдЭреЗ рдордВрдЪ рдХреА рдореВрд▓ рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рдореВрд▓реНрдп рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ

рдПрдХ рдЕрдЪреНрдЫрд╛ / рдореБрдЦреНрдп рдмрд┐рдВрджреБ рд╣реИред рдмрд╕ Docker Compose рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ Healthchecks рдХрд╛ рдореВрд▓ рд░реВрдк рд╕реЗ рдпрд╛ рддреЛ depend_on рдореЗрдВ рдпрд╛ рдПрдХ рдирдИ рдХреБрдВрдЬреА рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред рдмрд╕ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рдЖрдЧреЗ рднреА рдПрдХ рдХрджрдо рдЖрдЧреЗ рдмрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдирд╣реАрдВ рдФрд░ рдореВрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдиреАрдЪреЗ рд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдЙрджрд╛ --abort-on-container-exit рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд░рдирдЯрд╛рдЗрдо рдХреЗ рджреМрд░рд╛рди рдПрдХ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рд╕реНрд╡рд╛рд╕реНрдереНрдпрд╡рд░реНрдзрдХ рд▓реЗрдмрд▓ _unhealthy_ рдкрд░ рд╕реЗрдЯ рдХрд░рддреА рд╣реИред

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

рдореЗрд░реЗ рдкрд╛рд╕ рджреЛ docker-compose yml рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдФрд░ рджреВрд╕рд░рд╛ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╣реИред рдЕрдВрддрд░ рд╕рд┐рд░реНрдл sut рдХрдВрдЯреЗрдирд░ рдореЗрдВ docker-compose.test.yml ред sut рдХрдВрдЯреЗрдирд░ pytest рдЪрд▓рддрд╛ рд╣реИред рдореЗрд░рд╛ рд▓рдХреНрд╖реНрдп docker-compose рдЯреЗрд╕реНрдЯ рдЪрд▓рд╛рдирд╛ рдерд╛ рдФрд░ рдпрджрд┐ pytest рдХрдорд╛рдВрдб sut рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рддреЛ рд╡рд┐рдХрд╛рд╕ docker-compose рди рдЪрд▓рд╛рдПрдБред рдпрд╣рд╛рдВ рд╡рд╣ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рдЬреБрдЯрд╛рдпрд╛:

# launch test docker-compose; note: I'm starting it with -p argument
docker-compose -f docker-compose.test.yml -p ci up --build -d
# simply get ID of sut container
tests_container_id=$(docker-compose -f docker-compose.test.yml -p ci ps -q sut)
# wait for sut container to finish (pytest will return 0 if all tests passed)
docker wait $tests_container_id
# get exit code of sut container
tests_status=$(docker-compose -f docker-compose.test.yml -p ci ps -q sut | xargs docker inspect -f '{{ .State.ExitCode  }}' | grep -v 0 | wc -l | tr -d ' ')
# print logs if tests didn't pass and return exit code
if [ $tests_status = "1" ] ; then
    docker-compose -f docker-compose.test.yml -p ci logs sut
    return 1
else
    return 0
fi

рдЕрдм рдЖрдк рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рдХрд┐рд╕реА рднреА рдлрдВрдХреНрд╢рди рдореЗрдВ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЦрд╛рди рдХреЛ test рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рдРрд╕реЗ рдХрд░реЗрдВ:

test
test_result=$?
if [[ $test_result -eq 0 ]] ; then
    docker-compose -f docker-compose.yml up --build -d
fi

рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА docker-compose рд╕рдорд░реНрдерди рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ :)

+1

рд╢рд╛рдпрдж рдкреНрд▓рдЧрдЗрдиреНрд╕-рд░рдЪрдирд╛ рдХреЗ рдореВрд▓ рдХреЗ рдмрд╛рд╣рд░ рдорд╛рдиреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЪреАрдЬреЛрдВ рдХреЛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреА рдЕрдиреБрдорддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? # 1341 рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рдорд╛рди рд╣реА рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ рдЬреЛ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА рд▓реЗрдХрд┐рди рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рд╡рд░реНрддрдорд╛рди рджреГрд╖реНрдЯрд┐ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрд░реЗрдЦрд┐рдд рд╣реЛред рд╢рд╛рдпрдж рдПрдХ рдкреНрд▓рдЧрдЗрди рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛, рдЬреИрд╕реЗ # 3905 рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдПрдХ рдореБрдЦреНрдп рд╕реЗрдЯ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ рдФрд░ рдЕрдЧрд░ рдпрд╣ рдПрдХ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЬреЛ рд▓реЛрдЧ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡реЗ up рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред

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

рдпрд╣рд╛рдБ healthcheck рдФрд░ docker-compose 2.1+ рд╕рд╛рде рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ:

version: "2.1"
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password
    healthcheck:
      test: mysqladmin -uroot -ppassword ping
      interval: 2s
      timeout: 5s
      retries: 30
  web:
    image: nginx:latest # your image
    depends_on:
      db:
        condition: service_healthy

рдпрд╣рд╛рдБ docker-compose up db рдХрдВрдЯреЗрдирд░ рд╕реНрд╡рд╕реНрде рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рд╡реЗрдм рдХрдВрдЯреЗрдирд░ рдХреЛ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ред

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдПрдХ рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдпрд╣рд╛рдБ PostgreSQL рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реАрдХрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж @ рд╕рд┐рд▓реЗрдХреНрд╕ ЁЯСН

version: '2.1'
services:
  db:
    image: postgres:9.6.1
    healthcheck:
      test: "pg_isready -h localhost -p 5432 -q -U postgres"
      interval: 3s
      timeout: 5s
      retries: 5

@Silex рд╕рдВрд╕реНрдХрд░рдг "3" рдФрд░ рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдХреЗ рд╕рд╛рде рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ:

    image: nginx:latest # your image
    depends_on:
      db:
        condition: service_healthy

рдореБрдЭреЗ ERROR: The Compose file './docker-compose.yml' is invalid because: depends_on contains an invalid type, it should be an array

2.1 рдЗрд╕реЗ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд░реА рд╣реИ рдФрд░ рдЗрд╕реЗ рдкрджрд╛рд╡рдирдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред 3.x рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЭреБрдВрдб рд╕реЗрд╡рд╛ рдореЛрдб (рдЧреИрд░ рд╕реНрдерд╛рдиреАрдп) рдХреЗ рд▓рд┐рдП рд╣реИред

  From: Vlad Filippov <[email protected]>

To: docker / рд░рдЪрдирд╛
Cc: mbdas [email protected] ; рдЙрд▓реНрд▓реЗрдЦ @@oreply.github.com рдкрд░ рдХрд░реЗрдВ
рдкреНрд░реЗрд╖рд┐рдд: рдмреБрдзрд╡рд╛рд░, 8 рдорд╛рд░реНрдЪ, 2017 11:45 рдкреВрд░реНрд╡рд╛рд╣реНрди
рд╡рд┐рд╖рдп: Re: [docker / compose] рдХреНрдпрд╛ рдХрдВрдЯреЗрдирд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЛ рд╡рд┐рд▓рдВрдмрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд▓рдВрдмрд╛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп (# рей timeрек) рдХреЗ рд╕рд╛рде рдирд┐рд░реНрднрд░ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ

@Silex "3" рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ рдФрд░ рдпрд╣ рдкреНрд░рд╛рд░реВрдк: рдЫрд╡рд┐: nginx: рдирд╡реАрдирддрдо # рдЖрдкрдХреА рдЫрд╡рд┐
рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ:
db:
рд╢рд░реНрдд: service_healthy
рдореБрдЭреЗ ERROR: The Compose рдлрд╝рд╛рдЗрд▓ './docker-compose.yml' рдЕрдорд╛рдиреНрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐: services.auth.depends_on рдореЗрдВ рдПрдХ рдЕрдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рд╣реИ, рдпрд╣ рдПрдХ рд╕рд░рдгреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ, рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВред

2.1 рдЗрд╕реЗ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд░реА рд╣реИ рдФрд░ рдЗрд╕реЗ рдкрджрд╛рд╡рдирдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред 3.x рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЭреБрдВрдб рд╕реЗрд╡рд╛ рдореЛрдб (рдЧреИрд░ рд╕реНрдерд╛рдиреАрдп) рдХреЗ рд▓рд┐рдП рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж!

@vladikoff : рд╕рдВрд╕реНрдХрд░рдг 3 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА https://github.com/docker/compose/issues/4305 рдкрд░

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

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЕрдм рдЗрд╕реЗ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Unfortunatelly, рд╣рд╛рд▓рдд v3 рдореЗрдВ рдЕрдм рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдБ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ, рдЬреЛ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ:

website:
    depends_on:
      - 'postgres'
    build: .
    ports:
      - '3000'
    volumes:
      - '.:/news_app'
      - 'bundle_data:/bundle'
    entrypoint: ./wait-for-postgres.sh postgres 5432

  postgres:
    image: 'postgres:9.6.2'
    ports:
      - '5432'

wait-for-postgres.sh:

#!/bin/sh

postgres_host=$1
postgres_port=$2
shift 2
cmd="$@"

# wait for the postgres docker to be running
while ! pg_isready -h $postgres_host -p $postgres_port -q -U postgres; do
  >&2 echo "Postgres is unavailable - sleeping"
  sleep 1
done

>&2 echo "Postgres is up - executing command"

# run the command
exec $cmd

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

рд╕рдЪреНрдЪрд╛рдИ рдмрд╣реБрдд рдмрд╣рд╕ рдореЗрдВ рдереА рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд╢рд░реНрдд рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП 2.x рд╕рдорд░реНрдерди рдореВрд▓ рд░реВрдк рд╕реЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдФрд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЛ рдПрдХ рдмрд╣реБрдд рдЬрд░реВрд░реА рд╕рдорд░реНрдерди рджреЗрдиреЗ рдХрд╛ рдЖрджреЗрд╢ рдерд╛ред рдбреЙрдХрдЯрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕реНрдерд╛рдиреАрдп рдлрд▓реА рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрдм рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдЙрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЙрд╕реА рддрд░рд╣ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреИрд╕реЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╢рдмреНрджрд╛рд░реНрде рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

Docker 3.x рдХрдВрдкреЛрдЬрд╝ рдореЗрдВ рдЭреБрдВрдб рд╕рдорд░реНрдерди рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╡рд┐рддрд░рд┐рдд рдкреНрд░рдХреГрддрд┐ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЧреБрдЪреНрдЫрд╛ рдЧрд┐рд░рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

2.x рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореВрд▓ рд░рдЪрдирд╛ / рд╕реНрдерд╛рдиреАрдп рдЯреЛрдкреЛрд▓реЙрдЬреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рддреА рд╣реИред

рдбреЙрдХрд░ рдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИ рдХрд┐ рдЗрди 2 рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдХреИрд╕реЗ рдорд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдП рдХреНрдпреЛрдВрдХрд┐ рдХрдВрдкреЛрдЬрд╝ рдХреА рд╕реБрд╡рд┐рдзрд╛ рд╕реЗрдЯ рдХреЛ рдХрдо рдХрд░рдХреЗ рдХрдВрдкреЛрдЬрд╝ рдкрд░ рдЬрд╝реЛрд░ рджреЗрдирд╛ рдПрдХ рд╕реНрд╡рд╛рдЧрдд рдпреЛрдЧреНрдп рджрд┐рд╢рд╛ рдирд╣реАрдВ рд╣реИред

10 рдордИ, 2017 рдХреЛ рд╕реБрдмрд╣ 8:15 рдмрдЬреЗ, рд╕реНрд▓рд╛рд╡ рдирд┐рдХреБрд▓рд┐рди рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

Unfortunatelly, рд╣рд╛рд▓рдд v3 рдореЗрдВ рдЕрдм рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдБ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ, рдЬреЛ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ:

рд╡реЗрдмрд╕рд╛рдЗрдЯ:
рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ:
- 'рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ'
рдмрд┐рд▓реНрдб:ред
рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ:
- '3000'
рдорд╛рддреНрд░рд╛:
- ':: / news_app'
- 'рдмрдВрдбрд▓_рдзрд╛рддрд╛: / рдмрдВрдбрд▓'
рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ: ./wait-for-postgres.sh рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ 5432

postgres:
рдЪрд┐рддреНрд░: ' рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ: 9.6.2 '
рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ:
- '5432'
wait-for-postgres.sh:

! / Bin / рд╢

postgres_host = $ 1
postgres_port = $ 2
cmd = "$ @"

рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рдкреЛрд╕реНрдЯрдЧрд░реНрд▓ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ

рдЬрдмрдХрд┐ ! pg_isready -h $ postgres_host -p $ postgres_port -q -U postgres; рдХрд░

& 2 рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ "рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ - рд╕реЛ рд░рд╣рд╛ рд╣реИ"
рд╕реЛ рдЬрд╛рдУ рез
рдХрд┐рдпрд╛ рд╣реБрдЖ

& 2 рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ "рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рд╣реИ - рдХрдорд╛рдВрдбрд┐рдВрдЧ рдПрдЧреНрдЬреАрдХреНрдпреВрдЯрд┐рд╡"

рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВ

$ cmd рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ, рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВред

рдореИрдВ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛
// рд╕реНрдЯрд╛рд░реНрдЯ.рд╢

#!/bin/sh
set -eu

docker volume create --name=gql-sync
echo "Building docker containers"
docker-compose build
echo "Running tests inside docker container"
docker-compose up -d pubsub
docker-compose up -d mongo
docker-compose up -d botms
docker-compose up -d events
docker-compose up -d identity
docker-compose up -d importer
docker-compose run status
docker-compose run testing

exit $?

// рд╕реНрдерд┐рддрд┐ред рд╢

#!/bin/sh

set -eu pipefail

echo "Attempting to connect to bots"
until $(nc -zv botms 3000); do
    printf '.'
    sleep 5
done
echo "Attempting to connect to events"
until $(nc -zv events 3000); do
    printf '.'
    sleep 5
done
echo "Attempting to connect to identity"
until $(nc -zv identity 3000); do
    printf '.'
    sleep 5
done
echo "Attempting to connect to importer"
until $(nc -zv importer 8080); do
    printf '.'
    sleep 5
done
echo "Was able to connect to all"

exit 0

// рдореЗрд░реЗ рдбреЙрдХрдЯрд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦреЗрдВ

  status:
    image: yikaus/alpine-bash
    volumes:
      - "./internals/scripts:/scripts"
    command: "sh /scripts/status.sh"
    depends_on:
      - "mongo"
      - "importer"
      - "events"
      - "identity"
      - "botms"

рдореИрдВ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИред рдореИрдВ рдПрдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП MongoDB рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдореИрдВ docker рдореЗрдВ рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдпрд╛рдиреА рдмрдирд╛рдиреЗ рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯред рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдФрд░ рдЕрдЬрдЧрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореБрдЭреЗ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯ рдХреЗ рдкреНрд░рд╛рдердорд┐рдХ рдиреЛрдб рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реИред рдореБрдЭреЗ рд╡рд╣рд╛рдБ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИред

рдбреЛрдХрд░-compose.txt
Dockerfile.txt
рдФрд░ рдЕрдЬрдЧрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ im
for x in range(1, 4): client = MongoClient(host='node' + str(x), port=27017, username='admin', password='password') if client.is_primary: print('the client.address is: ' + str(client.address)) print(dbName) print(collectionName) break

рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдИ рд╣реЛ рд░рд╣реА рд╣реИ, рдХрд┐рд╕реА рдХреЛ рднреА рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ?

@patrickml рдЕрдЧрд░ рдореИрдВ рдбреЙрдХрдЯрд░ рдХрдВрдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛, рддреЛ рдореИрдВ рдЗрд╕реЗ рдбреЙрдХрдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд░реВрдБ?
рдореБрдЭреЗ рдЕрдкрдиреЗ build_all.cql рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 'cqlsh' рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, 'cllsh' рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ ... рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП 60 рд╕реЗрдХрдВрдб рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдмрд┐рд▓реНрд▓реА рдбреЙрдХрд░рдлрд╛рдЗрд▓

рд╕реНрдЯреЛрд░ / рдбрд╛рдЯрд╛рд╕реНрдЯреИрдХреНрд╕ / рдбреАрдПрд╕рдИ рд╕рд░реНрд╡рд░ рд╕реЗ: 5.1.8

USER рд░реВрдЯ

RUN рдПрдк-рдЧреЗрдЯ рдЕрдкрдбреЗрдЯ
RUN apt-get install -y vim

ADD db-script-2.1.33.2-RFT-01.tar / docker / cms /
COPY entrypoint.sh /entrypoint.sh

рд╡рд░реНрдХрдбрд╛рдЗрдбрд░ / рдбреЙрдХрдЯрд░ / рд╕реЗрдореА / рдбреАрдмреА- рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕-2.1.33.2/
RUN cqlsh -f build_all.cql

USER dse

=============

рдЪрд░рдг 8/9: RUN cqlsh -f build_all.cql
--- --- 08c8a854ebf4 рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ
рдХрдиреЗрдХреНрд╢рди рддреНрд░реБрдЯрд┐: ('рдХрд┐рд╕реА рднреА рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде', {'127.0.0.1': рддреНрд░реБрдЯрд┐ (111, "рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ [(127.0.0.1 ', 9042)]ред рдЕрдВрддрд┐рдо рддреНрд░реБрдЯрд┐: рдХрдиреЗрдХреНрд╢рди рдиреЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛")})
рдЖрджреЗрд╢ '/ bin / sh -c cqlsh -f build_all.cql' рдиреЗ рдПрдХ рдЧреИрд░-рд╢реВрдиреНрдп рдХреЛрдб рд▓реМрдЯрд╛рдпрд╛: 1

= Var-lib-libvirt.mount var-lib -irtvirt-images-ram.mount

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

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

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

squeaky-pl picture squeaky-pl  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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

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