рдирдорд╕реНрддреЗ,
рдпрд╣ YAML рдореЗрдВ "onrun" рдЬреИрд╕рд╛ рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рд░рди рдХреЗ рдмрд╛рдж рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛред Https://github.com/docker/docker/issues/8860 рдХреЗ рд╕рдорд╛рди
mongodb:
image: mongo:3.0.2
hostname: myhostname
domainname: domain.lan
volumes:
- /data/mongodb:/data
ports:
- "27017:27017"
onrun:
- mongodump --host db2dump.domain.lan --port 27017 --out /data/mongodb/dumps/latest
- mongorestore -d database /data/mongodb/dumps/latest/database
рдореЛрдВрдЧреЛрдбрдм рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ db2dump.domain.lan рдХреЛ рдбрдВрдк рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ред
рдЬрдм рдореИрдВ рд░реБрдХ рдЬрд╛рдКрдВрдЧрд╛ рдФрд░ рдлрд┐рд░ рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рдХрд░ рджреВрдВрдЧрд╛, рддреЛ рдмреЗрдХрд╛рд░ рднрд╛рдЧ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд▓реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
EDIT 15 рдЬреВрди 2020
5 рд╕рд╛рд▓ рдмрд╛рдж, рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдХреЛ "рдорд╛рдирдХреАрдХреГрдд" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд▓рд┐рдЦреЗрдВ,
рдХреГрдкрдпрд╛ https://github.com/compose-spec/compose-spec/issues/84 рджреЗрдЦреЗрдВ
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдореЗрдВ рдХрджрдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
FROM mongo:3.0.2
ADD data/mongodb/dumps/latest /data/mongodb/dumps/latest
RUN mongorestore -d database /data/mongodb/dumps/latest/database
рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЬрдм рдЖрдк рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЗрд╕реЗ рдХреИрд╢ рднреА рдХрд░рд╡рд╛рддреЗ рд╣реИрдВред
рд╕рд╛рднрд╛рд░ @dnephin
рдмреЗрд╢рдХ рдореИрдВ рдПрдХ рдбреЙрдХрдлрд╝рд┐рд▓ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рдмрдЬрд╛рдп рдмрд┐рд▓реНрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдпрд╛ рдореИрдВ рдбреЙрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
MongoDB рд╕рд┐рд░реНрдл рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЖрдк рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ mysql рдФрд░ рдЦрд╛рддрд╛ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде, рдпрд╛ rabbitmq рдФрд░ рдХрддрд╛рд░ рдЖрджрд┐ рдХреЗ рд╕рд╛рде рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
onrun
рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдкрд░ рд▓рдЪреАрд▓реЗрдкрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдХрдВрдкреЛрдЬрд╝ рдСрдирд░реВрди рд╕реВрдЪреА рдХреЛ рдкрдврд╝реЗрдЧрд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдкрд░ docker exec
ред
рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ docker exec
docker-compose.yml
рдореЗрдВ рдХрдорд╛рдВрдбреНрд╕ рдбрд╛рд▓рдирд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИ рдЬрдм рдЖрдк рдпрд╛ рддреЛ рдбреЙрдХрдлрд╝рд┐рд▓реЗ рдореЗрдВ рдпрд╛ рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпреЗ рджреЛрдиреЛрдВ рдЖрдкрдХреЗ рдХрдВрдЯреЗрдирд░ рдХреЛ рдФрд░ рднреА рдЙрдкрдпреЛрдЧреА рдмрдирд╛ рджреЗрдВрдЧреЗ рдЬрдм рдиреЛрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрдореНрдкреЛрдЬ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЕрдкрдиреЗ рдРрдк рдХреЛ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдореЗрдХрдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ рдЬреЛ рдЙрдкрдпреБрдХреНрдд docker
рдФрд░ docker-compose
рдХрдорд╛рдВрдб рдЪрд▓рд╛рддрд╛ рд╣реИред
рдЬрдм рддрдХ рдпрд╣ рдЙрди рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдп рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рддрдм рддрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдореЗрд░реЗ рдбреЙрдХрдЯрд░ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдореБрдЭреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдореЗрдХрдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдВрдЧреЗред рддреЛ рдХрдореНрдкреЛрдЬ рдХреНрдпреЛрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛
? рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░, рд╕реНрдХреЗрд▓ рдЖрджрд┐ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ || рдХрд╛рдордЪреЛрд░
рдареАрдХ рд╣реИ, рдореИрдВ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓реЗрддрд╛ рд╣реВрдВ, рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рд╕реАрдЖрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред
rabbitmq:
image: rabbitmq:3.5.1-management
environment:
RABBITMQ_NODENAME: rabbit
hostname: rabbitmq
domainname: domain.lan
volumes:
- /data/rabbitmq/db:/var/lib/rabbitmq
ports:
- "5672:5672"
- "15672:15672"
- "25672:25672"
- "4369:4369"
mongodb:
image: mongo:3.0.2
hostname: mongo
domainname: domain.lan
volumes:
- /data/mongodb:/data
ports:
- "27017:27017"
appmaster:
image: appmaster
hostname: master
domainname: domain.lan
environment:
...
ports:
- "80:80"
- "8080:8080"
links:
- mongodb
- rabbitmq
celery:
image: celery
hostname: celery
domainname: domain.lan
environment:
...
links:
- rabbitmq
рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдордирдЧреЛрдбрдм рдХрд╛ рдкреНрд░рд╛рд╡рдзрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЦрд░рдЧреЛрд╢реЛрдВ рдореЗрдВ рдХрддрд╛рд░ рдФрд░ рдЦрд╛рддреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
рдЖрдЬ рдореИрдВ рдЬреЛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ:
#!/bin/bash
PROJECT=appmaster
docker-compose -f appmaster.yml -p appmaster up -d
docker exec appmaster_rabbitmq_1 rabbitmqctl add_user user password
docker exec appmaster_rabbitmq_1 rabbitmqctl add_vhost rabbitmq.domain.lan
docker exec appmaster_rabbitmq_1 rabbitmqctl set_permissions -p rabbitmq.domain.lan password ".*" ".*" ".*"
docker exec appmaster_mongodb_1 mongodump --host mongo-prd.domain.lan --port 27017 --out /data/mongodb/dumps/latest
docker exec appmaster_mongodb_1 mongorestore -d database /data/mongodb/dumps/latest/database
onrun
рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рдореИрдВ рд╕реАрдзреЗ docker-compose -f appmaster.yml -p appmaster up -d
рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ
рдФрд░ yml рдлрд╝рд╛рдЗрд▓ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реЛ рдЬрд╛рддреА рд╣реИ
rabbitmq:
...
onrun:
- rabbitmqctl add_user user password
- rabbitmqctl add_vhost rabbitmq.domain.lan
- rabbitmqctl set_permissions -p rabbitmq.domain.lan password ".*" ".*" ".*"
mongodb:
...
onrun:
- mongodump --host mongo-prd.domain.lan --port 27017 --out /data/mongodb/dumps/latest
- mongorestore -d database /data/mongodb/dumps/latest/database
рдпрд╣ рдмрд▓реНрдХрд┐ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдФрд░ рдПрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред
: +1:
рдпрд╣ рдПрдХ рд╕реАрдбреА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ gated рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП docker-compose
рдЕрдзрд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдмрдирд╛ рджреЗрдЧрд╛
: +1:
рдпрд╣ # 877, # 1341, # 468 (рдФрд░ рдХреБрдЫ рдЕрдиреНрдп) рдХреА рдирдХрд▓ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ # 1510 рд╣реИ рдФрд░ рдЬрдм рдЖрдк рдЬрд┐рд╕ рдЗрд╡реЗрдВрдЯ рдХреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕реЗ рд╣рд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
рдирдХрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдХрд░рдирд╛
рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ "рдУрд╣ рдЖрдк рдЗрд╕реЗ рдПрдХ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ"ред рдмреЗрд╢рдХ рд╣рдо рдЗрд╕реЗ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рдереЗред рдореИрдВ рд╡рд╣ рд╕рдм рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддрд╛ рдерд╛ рдЬреЛ рдбреЙрдХрд░-рд░рдЪрдирд╛ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдПрдХрд▓ YAML рдлрд╛рдЗрд▓ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕рд░рд▓ docker-compose up
рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ _everything_ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдореНрдкреЛрдЬрд╝ рдХрд╛ рд░рд┐рдорд┐рдЯ рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдореЗрдХрдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдФрд░ рдмреНрд▓реЛрдЯ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рдмреАрдЪ рд╕рдВрддреБрд▓рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реЗрдЦрд╛ рдЦреАрдВрдЪрдиреА рд╣реЛрдЧреАред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХреА рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдкрддреНрддрд┐ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдореИрдХ, рд▓рд┐рдирдХреНрд╕ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдорд╢реАрдиреЛрдВ - рдорд╢реАрдиреЛрдВ рдХреЗ рдкрд╛рд░ рдХрд╛рдлреА рдкреЛрд░реНрдЯреЗрдмрд▓ рд╣реИред рдпрджрд┐ рд╣рдо рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд╢реЗрд▓ рдХрдорд╛рдВрдб рдбрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдмрд╣реБрдд рдХрдо рдкреЛрд░реНрдЯреЗрдмрд▓ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред
@рдЖрдирдВрдж рдирд┐рд╖реНрдкрдХреНрд╖ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ docker exec
рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ рдПрдХреНрд╕-рдкреНрд▓реЗрдЯ рдЕрдкреВрд░реНрдгрддрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдорд╛рдлреА - рдореИрдВрдиреЗ рд╣реЛрд╕реНрдЯ рдорд╢реАрди рдкрд░ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЧрд▓рдд рдмрддрд╛рдпрд╛ рд╣реИред рдлрд┐рд░ рднреА, рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдмрд┐рдВрджреБ рдЦрдбрд╝рд╛ рд╣реИред
рдореБрдЭреЗ рдЖрдкрдХреА рдмрд╛рдд рд╕рдордЭ рдореЗрдВ рдЖрддреА рд╣реИ @aanand рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЧреБрдВрдЬрд╛рдЗрд╢ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА docker-compose
рдмрд╣реБрдд рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдирд┐рдпрдорд┐рдд docker
рдЗрдВрдЬрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ command
, expose
, ports
, build
, рдЖрджрд┐ exec
рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ docker-compose
рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐ рдЬреБрдбрд╝ рдЬрд╛рдПрдЧреА, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╣реА рд╕реНрдЯреЙрдк рд╢реЙрдк рдмрди рдЬрд╛рдПрдЧреАред рджреЗрд╡ рд╡рд╛рддрд╛рд╡рд░рдгред
@ рджреЗрд╡рд╛рдирдВрдж рдХрдИ
рддреЛ рдЖрдк рдмрд╕ рдХреБрдЫ рдирд┐рд╖реНрдкрд╛рджрди рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЗрдХрдлрд┐рд▓ рдпрд╛ рдмреИрд╢рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ https://github.com/docker/compose/issues/1809#issuecomment -128073224
рдЬреЛ рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕реБрдЭрд╛рддрд╛ рд╣реВрдВ рд╡рд╣ onrun
(рдпрд╛ oncreate) рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЖрд▓рд╕реНрдп рд░рдЦрддрд╛ рд╣реИред рдмрд╕ рдкрд╣рд▓реА рд╢реБрд░реБрдЖрдд рдореЗрдВ рджреМрдбрд╝реЗрдВред рдпрджрд┐ рдХрдВрдЯреЗрдирд░ рдХреЛ рд░реЛрдХрд╛ рдпрд╛ рд░реЛрдХрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдирдИ рд╢реБрд░реБрдЖрдд onrun (рдпрд╛ oncreate) рдирд╣реАрдВ рдЪрд▓реЗрдЧреА
рдЕрдВрдд рдореЗрдВ, рдореЗрд░реЗ рдЧрд┐рдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХрдВрдкреЛрдЬрд╝ рдлрд╛рдЗрд▓, рдПрдХ рдбреЙрдХрдлрд╛рдЗрд▓ рдФрд░ рдПрдХ рдореЗрдореНрдлрд╛рдЗрд▓ рдЗрдореНрдкреЛрдЯреЗрдиреНрд╕реА рдореИрдиреЗрдЬрдореЗрдВрдЯ рд╣реЛрдЧрд╛ (рдореЗрдХрдлрд╛рдЗрд▓ рд╕реНрдЯреЗрдЯрдлрд╛рдЗрд▓ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдкреНрд░рддрд┐рднрд╛рд╢рд╛рд▓реА!
command
, expose
, рдЖрджрд┐ рдФрд░ exec
рдмреАрдЪ рдПрдХ рдмрдбрд╝рд╛ рдЕрдВрддрд░ рд╣реИред рдкрд╣рд▓реЗ рд╕рдореВрд╣ рдореЗрдВ рдХрдВрдЯреЗрдирд░ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, exec
рдПрдХ рдХрдорд╛рдВрдб / рдПрдкреАрдЖрдИ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рд╣реИред рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдХрдВрдЯреЗрдирд░ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВред
рдХрдореНрдкреЛрдЬрд╝ (https://github.com/docker/compose/issues/1809#issuecomment-128059030) рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рддрд░реАрдХреЗ рд╣реИрдВред onrun
рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИред рдпрд╣ command
ред
рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдбрдВрдкрд┐рдВрдЧ рдпрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╡реЗ рдЕрдзрд┐рдХ "рд╡рд░реНрдХрдлрд╝реНрд▓реЛ" рдпрд╛ "рдмрд┐рд▓реНрдб рдСрдЯреЛрдореЗрд╢рди" рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдп рд╣реИрдВ, рдЬреЛ рдЖрдо рддреМрд░ рдкрд░ рдореЗрдХрдлрд╛рдЗрд▓ рдореЗрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрди рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреВрд▓ рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдбреЛрдмреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЪрд▓рд╛рддрд╛ рд╣реИред рдпрд╣ рдХрдВрдкреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рднреА рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдПрдХреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк Makefiles рд╕реЗ рдЦреБрд╢ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ init / load use рдХреЗрд╕ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдБред
@dnephin onrun
рдПрдХ рд╕рд╛рдзрд╛рд░рдг command
рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╕рд┐рд░реНрдл рдмреЗрдХрд╛рд░ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВред
рдЖрдЗрдП рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдХрдВрдЯреЗрдирд░ рдирд┐рд░реНрдорд╛рдг рдкрд░ create
рдФрд░ рдлрд┐рд░ рдХрднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдбрдВрдк рдФрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ)ред
exec:
create:
- echo baby
destroy:
- echo keny
start:
- echo start
stop:
- echo bye
рдпрджрд┐ рдЖрдкрдХреЛ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
рдбреЙрдмреА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рд░рдЪрдирд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд░рдЪрдирд╛ рдЦрд░рд╛рдм рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рд░рдЪрдирд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд░рдЪрдирд╛ рдЦрд░рд╛рдм рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдпрд╣ рдХрд╣рдиреЗ рдЬреИрд╕рд╛ рд╣реИ рдХрд┐ "рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХрд╛ рдУрдПрд╕ рдЦрд░рд╛рдм рд╣реИ"ред рдХреЛрдИ рднреА рдЙрдкрдХрд░рдг рд╕рдм рдХреБрдЫ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдирд┐рдХреНрд╕ рджрд░реНрд╢рди рдПрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд░рддрд╛ рд╣реИ ред рдпрд╣реА рд╣рдо рдпрд╣рд╛рдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХрдореНрдкреЛрдЬрд╝ рдЕрдкрдиреА рдПрдХ рдЪреАрдЬрд╝ "рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯ рдХрдВрдЯреЗрдирд░" рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдмрд┐рд▓реНрдб рдСрдЯреЛрдореЗрд╢рди рдЯреВрд▓ рдирд╣реАрдВ рд╣реИред
рдпрд╣ рдХрд╣рдиреЗ рдЬреИрд╕рд╛ рд╣реИ рдХрд┐ "рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХрд╛ рдУрдПрд╕ рдЦрд░рд╛рдм рд╣реИ"ред рдХреЛрдИ рднреА рдЙрдкрдХрд░рдг рд╕рдм рдХреБрдЫ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдирд┐рдХреНрд╕ рджрд░реНрд╢рди рдПрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╣рдо рдпрд╣рд╛рдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рд╡рд╛рд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╡рд┐рд╢реНрд╡рд╛рд╕ рдкрд░ рдкрд╣реБрдВрдЪ рдЧрдПред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдПрдХ рд╕рд░рд▓ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдШрдЯрдХ рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЪреАрдЬреЗрдВ рдХреИрд╕реЗ рдЦреЗрд▓ рд░рд╣реА рд╣реИрдВред рдбреЙрдХрд░ рдЕрдм рдХреНрд▓рд╛рдЙрдб рд╕рд░реНрд╡рд░ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдмрдирд╛ рд░рд╣рд╛ рд╣реИ, рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо, рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛: рдЫрд╡рд┐рдпрд╛рдВ рдмрдирд╛рдирд╛, рдЫрд╡рд┐рдпрд╛рдВ рдЪрд▓рд╛рдирд╛, рдЕрдкрд▓реЛрдб рдХрд░рдирд╛, рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛, рдФрд░ рдЕрдВрддрддрдГ рдУрд╡рд░рд▓реЗ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ, рд╕рднреА рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдореВрд▓ рд░реВрдк рд╕реЗ рдЪрд▓ рд░рд╣реЗ рдПрдХ рдЕрдЦрдВрдб рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рд╣реИрдВред ред рдорд╛рдирдХ рдХрдВрдЯреЗрдирд░ рдШреЛрд╖рдгрд╛рдкрддреНрд░ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рдореЗрдВ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдбреЙрдХрд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕рд░рд▓ рд░рдЪрдирд╛ рдпреЛрдЧреНрдп рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдмрди рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рд╣рдордиреЗ рдХрд▓реНрдкрдирд╛ рдХреА рдереАред
рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕ рдмрд╛рдд рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдпреВрдирд┐рдХреНрд╕ рдХреЗ рджрд░реНрд╢рди рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЛ рдбреЙрдХ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП "рдбреВрдХрд░ рдХрдВрдкреЛрдЬрд╝" рдХреЛ рдХрднреА рдЕрдВрджрд░ рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗ? https://www.orchardup.com/blog/orchard-is-joining-docker
рдЙрд╕ рдореВрд▓ рд▓рдХреНрд╖реНрдп рдХреА рдУрд░ рдмрдврд╝рддреЗ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдбреЙрдХрд░ рд╕реЗ рдЬреБрдбрд╝ рд░рд╣реЗ рд╣реИрдВред рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо Docker рдХреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦреЗ рдЧрдП рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рд╡рд┐рдХрд╛рд╕ рдЕрдиреБрднрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреЗ рд░рд╣реЗрдВрдЧреЗ - рджреЛрдиреЛрдВ Fig рдХреЗ рд╕рд╛рде, рдФрд░ рдЕрдВрдЬреАрд░ рдХреЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рднрд╛рдЧреЛрдВ рдХреЛ Docker рдореЗрдВ рд╣реА рд╢рд╛рдорд┐рд▓ рдХрд░рдХреЗред
рддреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдХрдВрдкреЛрдЬ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рдирд╛рд░ рд▓реЛрдб рдХрд░рдиреЗ рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ ..? рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╣реИрд░рд╛рди рд╣реВрдБ ..
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдЙрддреНрдкрд╛рджрди рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдлрд╝рд┐рдХреНрдЪрд░ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП? рдпрд╛ рдореЗрд░реА рд░рдЪрдирд╛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП? рдмрд╛рдж рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рднреА 'рдбреЙрдХ рд░рди' рдХреЛ рдЕрдВрдЬрд╛рдо рджреЗ рд╕рдХрддрд╛ рдерд╛ рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдерд╛ред
@ рдбрд┐рдбреЙрд░реНрдбрд┐рдпрдирдлрд╝рд┐рд╢ , рдпрджрд┐, рдХрд┐рд╕реА рддрд░рд╣, рдХреЛрдИ рдЗрд╕ рддрдереНрдп рдХреЛ
рдЖрдЦрд┐рд░ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рдордп рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рд░рдирдЯрд╛рдЗрдо рдХреЗ рд╕рдордп рдХреА рдЬрд░реВрд░рдд рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд░рдирдЯрд╛рдЗрдо рдХреЗ рджреМрд░рд╛рди рдЗрд╕рдХреА рдЬрд░реВрд░рдд рдЕрдХреНрд╕рд░ рддреИрдирд╛рддреА рдХреЗ рдорд╛рд╣реМрд▓ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИ ...
рдпрд╣ рдореЗрд░реА рдмрд╛рд╣рд░реА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╖реНрдЯрдкреНрд░рдж рдХрд╛рдо рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдиреЗ рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ ...
рдФрд░ рд╡реЗ рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рдЬреАрд╡рди рдЪрдХреНрд░ рд╣реБрдХ + рдЖрджреЗрд╢ + рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИрдВред
рдЖрдк рдЗрд╕реЗ рд╕реЗрд╡рд╛ рдкреНрд░рдмрдВрдзрди рдврд╛рдВрдЪреЗ рдФрд░ рдЕрдиреНрдп рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдЯреВрд▓ рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ ... рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬ рдореЗрдВ рдХреНрдпреЛрдВ рдирд╣реАрдВ?
рдЖрдкрдХреЛ https://github.com/dnephin/dobi рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬреЛ рдПрдХ рдРрд╕рд╛ рдЙрдкрдХрд░рдг рд╣реИ рдЬрд┐рд╕ рдкрд░ рдореИрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдЙрди рд╡рд░реНрдХрдлрд╝реНрд▓реЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
@dnephin рдЕрдкрдиреЗ рдЯреВрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕реНрдкреИрдо
рдЖрдкрдХреА рд░рдЪрдирд╛рддреНрдордХ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рдерд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ 8 рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдбреЛрдмреА рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛ред
рдпрджрд┐ рдЖрдк Makefile / bash рд╕реЗ рдЦреБрд╢ рд╣реИрдВ рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ! рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИред
рдЗрд╕ рд╡рд┐рд╖рдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдпрд╣рд╛рдБ рдЬреЛрдбрд╝реЗ: https://github.com/docker/compose/issues/1341#issuecomment -295300246
рдЗрд╕рдХреЗ рд▓рд┐рдП
рдЗрд╕рд▓рд┐рдП рджреБрдЦрдж рд╣реИ рдХрд┐ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдкрд╡рд░реНрддрдХрддрд╛ рдХреЗ рдХрд╛рд░рдг рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдирд┐рд░рд╛рд╢:
рдбреЙрдХ рдХрдВрдкреЛрдЬрд╝ рд╣реЛрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдореВрд▓реНрдп рдорд╛рдирдХреАрдХрд░рдг рд╣реИ
рдпрд╣реА рддреЛ рдмрд╛рдд рд╣реИред рдЕрдЧрд░ рд╣рдо "ред" рдлрд╝рд╛рдЗрд▓ рдХреЛ .sh рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдЬреЛ рднреА рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдмрд┐рдирд╛ рдбреЙрдХрд░ рдХрдореНрдкреЛрдЬрд╝ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдХреНрдпреЛрдВ рдореМрдЬреВрдж рд╣реИ? : рднреНрд░рдорд┐рдд:
рд╣рдо рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рдХрд╛рдо рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ @ рд╢рд┐рди рдиреЗ рдХрд╣рд╛:
рдпрд╣ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЙрд╕ рд╕реНрддрд░ рдкрд░ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмреЛрдЭ рд╣реИ
:рджрд┐рд▓:
рд▓реЗрдХрд┐рди рдЖрдк рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ рдХрд┐ "рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдВ" рдХрд╛ рдЕрд░реНрде рд╣реИ "рдЕрд░реЗ, рдпрд╣ рдмрд╣реБрдд рдХрдард┐рди рд╣реИ, рд╣рдо рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдирд╣реАрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ"ред
рдпрджрд┐ рдРрд╕рд╛ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ, рддреЛ рдмрд╕ рдХрд╣реЗрдВ "рдЖрдкрдХрд╛ рд╡рд┐рдЪрд╛рд░ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдФрд░ рдпрд╣ рдХреБрдЫ рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╕рдордп рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрди рдирд╣реАрдВ рд╣реИрдВ ... рд╢рд╛рдпрдж рдЖрдк рдЗрд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВред рдкреБрд▓ рдЕрдиреБрд░реЛрдз "рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ: рдмрд▓реНрдм:
# 1341 рдореЗрдВ, рдореИрдВ "рдХреЗрд╡рд▓" docker-compose.yml
рдХрдорд╛рдВрдб рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рджреЗрдЦрддрд╛ рд╣реВрдВ рдЬреИрд╕реЗ nmp install
рдЬреЛ рдХреБрдЫ рдШрдЯрдирд╛рдУрдВ (рдЬреИрд╕реЗ рдХрдВрдЯреЗрдирд░ рдирд┐рд░реНрдорд╛рдг) рд╕реЗ рдкрд╣рд▓реЗ рдпрд╛ рдмрд╛рдж рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреИрд╕реЗ рдЖрдк docker exec <container id> npm install
рд╕рд╛рде рдХрд░реЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
рдореИрдВ рдПрдХ рдХрд╕реНрдЯрдо NodeJS рдЫрд╡рд┐ рд╣реИ рдФрд░ рдореИрдВ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ npm install
рдПрдХ рд╕рд╛рде рдпрд╣ рд╕реЗ рдмрдирд╛рдП рдЧрдП, рдХрдВрдЯреЗрдирд░ рдореЗрдВ docker-compose up --build
ред
рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ: рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ docker-compose.yml
рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реЙрд▓реНрдпреВрдо рдХреЗ рд╕рд╛рде рдЗрд╕рдореЗрдВ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
custom-node:
build: ../my_app-node/
tty: true
#command: bash -c "npm install && node"
volumes:
- /var/www/my_app:/usr/share/nginx/html/my_app
рдЗрд╕рд▓рд┐рдП рдореИрдВ Dockerfile рдореЗрдВ npm install
рдирд╣реАрдВ рдЪрд▓рд╛ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛: http://stackoverflow.com/questions/43498098/what-is-the-order-of-events-in-docker-compose
npm install
рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб, command
рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
command: bash -c "npm install && node"
рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╛рдл рдирд╣реАрдВ рд╣реИ: рдирд┐рд░рд╛рд╢: рдФрд░ рдЬреЛ рдореИрдВ рдЕрд▓реНрдкрд╛рдЗрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдирд╣реАрдВ рдЪрд▓рд╛ рд╕рдХрддрд╛ (рдЙрдирдХреЗ рдкрд╛рд╕ рдЗрд╕рдореЗрдВ рдмреИрд╢ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ)ред
рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдбреЙрдХрдЯрд░ рдХрдВрдкреЛрдЬ рдХрдВрдЯреЗрдирд░, рдИрдЬреА рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛:
custom-node:
build: ../my_app-node/
tty: true
command: node
volumes:
- /var/www/my_app:/usr/share/nginx/html/my_app
exec:
- npm install
рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрд╛рдпрдм рд╣реИ!
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд░рдЪрдирд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╢рд╛рдпрдж рдЧрд▓рдд рд╣реВрдВ рдФрд░ рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЕрдзрд┐рдХ рд╣реИред рдореИрдВ рдЕрдирд╛рде рдХрдВрдЯреЗрдирд░реЛрдВ рдЬреИрд╕реЗ рдХрдИ рдЕрдиреНрдп рдЦреБрд░рджрд░реЗ рдХрд┐рдирд╛рд░реЛрдВ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд╛рдо, рдкрде рдФрд░ рдпрд╣ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЗ рдмреАрдЪ рд╕реНрдкрд╖реНрдЯ рд╕рдВрдмрдВрдз рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдЖрджрд┐ рдореЗрдВ рдХрдИ рдХрдВрдкреЛрдЬрд╝ рдлрд╛рдЗрд▓реНрд╕ рд╣реИрдВ, рддреЛ рд╕рднреА рдореЗрдВ рдпрд╣ рд╕реАрдЖрдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдлрд┐рдЯ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдореИрдВ рдХреНрдпреВрдмрд▓реЗрдЯ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдЪрд▓рд╛рдХрд░ рд╕реАрдЖрдИ рдореЗрдВ рдЕрдкрдиреЗ рдЙрддреНрдкрд╛рджрди k8 рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЧреЛрдВрдж рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдЗрд╕ рддрд░рд╣ рдореИрдВ рджреЗрд╡, рдкрд░реАрдХреНрд╖рдг рдФрд░ рдареЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдШреЛрд╖рдгрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
@ рдЖрдХрд░реНрд╖рдХ-рдЪрд┐рдкрдЪрд┐рдкрд╛ рдЖрдк рдЕрд▓реНрдкрд╛рдЗрди рдореЗрдВ sh -c
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЬреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡рд╣ "рдмрд┐рд▓реНрдб рдСрдЯреЛрдореЗрд╢рди" рд╣реИ рдЬреЛ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдХреА рднреВрдорд┐рдХрд╛ рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдбреЛрдмреА рдХреЛ рджреЗрдЦрд╛ рд╣реИ?
рджреЛ рд╕рд╡рд╛рд▓:
рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЕрддреНрдпрдзрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ!
@ рд▓реНрдпреБрд╕рд┐рд▓ рдЪрд┐рдкрдЪрд┐рдкрд╛
рдпрд╣ рдбреЙрдХрдЯрд░ рд░рдЪрдирд╛ рдХреА рднреВрдорд┐рдХрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ?
рдХреНрдпреЛрдВрдХрд┐ рдХрдореНрдкреЛрдЬрд╝ рдХреА рднреВрдорд┐рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдХрдореНрдкреЛрдЬ рдорд▓реНрдЯреА-рдХрдВрдЯреЗрдирд░ рдбреЙрдХрдЯрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реИред Compose рдХреЗ рд╕рд╛рде, рдЖрдк рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ Compose рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░, рдПрдХ рд╣реА рдЖрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдЕрдкрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
рдпрджрд┐ рдмрд┐рдВрджреБ рдХреЗ рдкрд╛рд╕ рдЙрди рд╕рднреА рдкрд░ рд╢рд╛рд╕рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ, рддреЛ рдореИрдВ рдПрдХ рдЕрдиреНрдп рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдбреЙрдХрд░ рдХрдореНрдкреЛрдЬ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ?
рд╣рдо рдЙрди рд╕рднреА рдкрд░ рд╢рд╛рд╕рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдирд╣реАрдВ рдмрдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо UNIX рджрд░реНрд╢рди рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ "mak [ing] рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдХ рдХрд╛рдо рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдирдпрд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдкреБрд░рд╛рдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдирдП рд╕рд┐рд░реЗ рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред"
рдЙрд╕ рджрд░реНрд╢рди рд╕реЗ рдЕрд╕рд╣рдордд рд╣реЛрдирд╛ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣реА рдХрд┐ рд╣рдо рдбреЙрдХрд░ рдореЗрдВ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдореИрдВ рдпрд╣ рдореБрджреНрджрд╛ рдмрдирд╛рддрд╛ рд╣реВрдВ, рдЕрдЧрд╕реНрдд 2015 рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрд╖ рдХреЛрдИ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рд╣рдо рдПрдХ рд╣реА рдЙрддреНрддрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рд╡рд╛рд▓ рдкрд░ рд▓реВрдк рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдк @dnephin рдХреЛ рдЕрдкрдиреЗ рдЯреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдмрдирд╛рддреЗ рд╣реБрдП рджреЗрдЦреЗрдВрдЧреЗ)ред
@ рдирд▓реА
рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдЯреВрд▓ рдореЗрдВ рдЖрдк "рдмрд┐рд▓реНрдб" рдФрд░ "рдкреНрд░рд╛рд╡рдзрд╛рди" рдХреЛ рдЕрд▓рдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдЖрдк рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ:
рдЬрдм рдЖрдк рдХрд┐рд╕реА рд╕реЗрд╡рд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЙрд╕реЗ рдкреНрд░рд╛рд╡рдзрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдореИрдВ рдПрдХ рдЯреЙрдордХреИрдЯ рдХреЛ рддреИрдирд╛рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдЗрд╕реЗ рдПрдХ рдпреБрджреНрдз рдХреЗ рд╕рд╛рде рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЕрдЧрд░ рдореИрдВ рдПрдХ рдбреАрдмреА рдмрдирд╛рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдбреЗрдЯрд╛ рдЖрджрд┐ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЪрд╛рд╣реЗ рдХрдВрдЯреЗрдирд░ рдХреЛ рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдП (рдЫрд╡рд┐ рдЕрдиреБрд░рдХреНрд╖рдХ рдЗрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ)ред рдХрдореНрдкреЛрдЬрд╝ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ "рдкреНрд░рд╛рд╡рдзрд╛рдирдХрд░реНрддрд╛" рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп "рдореЗрд░реЗ рдХрдВрдЯреЗрдирд░ рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛" рдФрд░ "рдпрд╣ рдХреНрдпрд╛ рдкреНрд░рд╛рд╡рдзрд╛рди рд╣реИ" рдХреЗ рдмреАрдЪ рдЧрд▓рддрдлрд╣рдореА рд╕реЗ рдмрдЪрдирд╛ рд╣реИред
рдЬреИрд╕реЗ рдХрд┐ рдХрдВрдкреЛрдЬрд╝ рдбреЙрдХ рдореЗрдВ рдЖрдкрдХрд╛ рдЙрджреНрдзрд░рдг "рдХрдВрдкреЛрдЬрд╝ рдХреЗ рд╕рд╛рде, рдЖрдк рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░ , рдПрдХрд▓ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЕрдкрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдмрдирд╛рддреЗ рдФрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ"
рдпреВрдирд┐рдХреНрд╕ рджрд░реНрд╢рди? рдореБрдЭреЗ рд╣рдВрд╕рдиреЗ рджреЛред рдореИрдВ рдЖрдкрдХреЛ рдЙрд╕реА рдЙрддреНрддрд░ рдХреА рдУрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдореИрдВрдиреЗ рдЗрд╕ рдЕрдВрдХ рдореЗрдВ рдХрд┐рдпрд╛ рдерд╛ https://github.com/docker/compose/issues/1809#issuecomment -237195021ред
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпреВрдирд┐рдХреНрд╕ рджрд░реНрд╢рди рдореЗрдВ "рдЧрддрд┐рд╢реАрд▓рддрд╛" рдХреИрд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдЧреАред
@ рд╢рд┐рди- docker- рд░рдЪрдирд╛ рдХрд▓реНрдкрдирд╛ рдХреЗ рдХрд┐рд╕реА рднреА рдЦрдВрдб рджреНрд╡рд╛рд░рд╛ рдпреВрдирд┐рдХреНрд╕ рджрд░реНрд╢рди рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬрд╝ рдиреЗ рдпреВрдирд┐рдХреНрд╕ рджрд░реНрд╢рди рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рддреЛ рдирд┐рд░реНрдорд╛рдг, рдЕрдк, рдЖрд░рдПрдо, рд╕реНрдЯрд╛рд░реНрдЯ, рд╕реНрдЯреЙрдк, рдЖрджрд┐ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдЕрд╕рддрдд рдХрдорд╛рдВрдб рд╣реЛрдВрдЧреЗ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдПрдХ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╕реНрдЯрдб, рд╕реНрдЯрдбрдЖрдЙрдЯ, рдФрд░ рд╕реНрдЯреИрдбрд░ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд▓рдЧрд╛рддрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рд┐рд╕реНрдЯрдо рд╡реА, рдПрдЪрдкреА-рдпреВрдПрдХреНрд╕, рдПрдЖрдИрдПрдХреНрд╕, рд╕реЛрд▓рд╛рд░рд┐рд╕, рдФрд░ рд▓рд┐рдирдХреНрд╕ рд╕рд╣рд┐рдд 20 рд╕реЗ рдЕрдзрд┐рдХ рд╡рд░реНрд╖реЛрдВ рдХреЗ рдЕрдиреБрднрд╡ рдХреЗ рд╕рд╛рде рдпреВрдирд┐рдХреНрд╕ рд╕рд┐рд╕рд╛рдбрдорд┐рди рдХрд╣рддреЗ рд╣реИрдВ
рдЖрдЗрдП рд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдЕрд╡рд▓реЛрдХрди рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ
рдХрдореНрдкреЛрдЬ рдорд▓реНрдЯреА-рдХрдВрдЯреЗрдирд░ рдбреЙрдХрдЯрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реИред Compose рдХреЗ рд╕рд╛рде, рдЖрдк рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ Compose рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░, рдПрдХ рд╣реА рдЖрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдЕрдкрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рдЕрдВрдд рдореЗрдВ, docker- рд░рдЪрдирд╛ docker рдЫрд╡рд┐рдпреЛрдВ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рдореВрд╣ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдЙрдкрдХрд░рдг рд╣реИред рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬ.рдЖрдИрдПрдордПрд▓ рдлрд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реЗрд╡рд╛рдУрдВ рдХреЛ 'рдХреНрд░рд┐рдПрдЯ', 'рд╕реНрдЯрд╛рд░реНрдЯ', 'рд╕реНрдЯреЙрдк', 'рд╕реНрдХреЗрд▓' рдФрд░ 'рд░рд┐рдореВрд╡' рдХрд░рдирд╛ рдкреНрд░рд╛рдердорд┐рдХ рдХрд╛рд░реНрдп рд╣реИрдВред
рдХрдИ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЗрди рдЬреАрд╡рди рдЪрдХреНрд░ рд╕рдВрдХреНрд░рдордгреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рджреМрд░рд╛рди рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдЕрдХреНрд╕рд░ рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕реНрдХреЗрд▓рд┐рдВрдЧ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдХреНрд╕рд░ рдПрдХ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рдПрдХ рд╕рджрд╕реНрдп рдЬреЛрдбрд╝рд╛ рдпрд╛ рд╣рдЯрд╛рдпрд╛ рд╣реИред рдХреБрдЫ рд▓рдХрд╡рд╛рдЧреНрд░рд╕реНрдд sysadmins рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд▓реЙрдЧ рдХреЛ рдЬрдмрд░рди рдлреНрд▓рд╢ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдмрдВрдж рдХрд░рддреЗ рд╕рдордп рдЪреМрдХрд┐рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред
рдЕрдзрд┐рдХрд╛рдВрд╢ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдЯреВрд▓ рдХреЗ рд▓рд┐рдП рд░рд╛рдЬреНрдп рд╕рдВрдХреНрд░рдордг рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЖрдкрдХреЛ рдпрд╣ AWS рдХреЗ рдЯреВрд▓, Google рдХреЗ рдЯреВрд▓, рдлреЛрд░рдореИрди, рд╢реЗрдл рдЖрджрд┐ рдореЗрдВ рдорд┐рд▓реЗрдЧрд╛ред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЪреАрдЬреЗрдВ рдЬреЛ рдЗрд╕ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рд╕реНрдкреЗрд╕ рдореЗрдВ рд░рд╣рддреА рд╣реИрдВ, рдЙрдирдореЗрдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЬреАрд╡рдирдЪрдХреНрд░ рд╣реБрдХ рд╣реЛрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдордЬрд╝рдмреВрддреА рд╕реЗ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рд╣реИ, рдпрд╣ рдПрдХ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдЯреВрд▓ рд╣реИ рдФрд░ рдпрд╣ рд░рд╛рдЬреНрдп рдХреЗ рдмрджрд▓рд╛рд╡реЛрдВ рд╕реЗ рдЕрд╡рдЧрдд рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдШрдЯрдирд╛рдУрдВ рдпрд╛ рдмрд╛рд╣рд░реА рд▓рд┐рдкрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЗ рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред рд╡реЗ рдмреЗрдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ, рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдЪрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ 'рджреВрд╕рд░реА' рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реИред рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдпрд╛ рдХрдВрдЯреЗрдирд░ рдХреЗ рдмрд╛рд╣рд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╣реБрдХ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рд╣реИред
рджрд┐рди рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ docker - @aanand , @dnephin , @
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЙрддреНрдкрд╛рджрди рдЙрддреНрдкрд╛рджрди рдХреА рддреИрдирд╛рддреА рдореЗрдВ рдбреЙрдХрдЯрд░ рдХреЗ рдореЗрд░реЗ рдЧреЛрдж рд▓реЗрдиреЗ рдХреЛ рд░реЛрдХ рд░рд╣реА рд╣реИред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдЦрд╛рд░рд┐рдЬ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХреБрдЫ рдлреИрд╢рди рдореЗрдВ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛!
рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдХреЛрдИ рдРрдк рдХрдВрдЯреЗрдирд░ A рд░рдирд┐рдВрдЧ рд╕рд░реНрд╡рд┐рд╕ 'a' db рдХрдВрдЯреЗрдирд░ B рд░рдирд┐рдВрдЧ рд╕рд░реНрд╡рд┐рд╕ b рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рддрдм A рдХрдВрдЯреЗрдирд░ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЙрд╕рдХрд╛ b рд╕реЗрдЯрдЕрдк рди рд╣реЛред
рдореИрдВ рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдбреЙрдХрд░рдлрд╛рдЗрд▓реНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдбреЙрдХ рд╣рдм рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ A рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рдХрдВрдЯреЗрдирд░ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рд╡рд┐рдХрд▓реНрдк рдЕрдиреНрдпрдерд╛ рд╣реИ
рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ @ рд▓реНрдпреВрд╕реА-рдЪрд┐рдкрдЪрд┐рдкрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реВрдВред
@lekhnath рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рд╣рд▓ command
рдореЗрд░реА рдореЗрдВ рд╡рд┐рдХрд▓реНрдк docker-compose.yml
:
command: bash -c "npm install && node"
рд▓реЗрдХрд┐рди рдпрд╣ soooo рдмрджрд╕реВрд░рдд рдЯреАрдЯреА рд╣реИ
@ рдЖрдХрд░реНрд╖рдХ-рдЪрд┐рдкрдЪрд┐рдкрд╛ рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдХрдВрдЯреЗрдирд░ рдХреЗ Dockerfile
рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рд╕реА рднреА рдЖрджреЗрд╢ рдХреЛ рдкрд▓рдЯ рджреЗрддрд╛ рд╣реИред рдореИрдВрдиреЗ volumes
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдХрд╕реНрдЯрдо рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рддреЗ рд╣реБрдП рдХрд╛рдо рдХрд┐рдпрд╛, command
рдХреЛ рдЕрдкрдиреА Docker Compose рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЙрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдЗрд╕рдореЗрдВ рдореВрд▓ CMD
Dockerfile
ред
рдпрд╣ рдореБрджреНрджрд╛ рдХреНрдпреЛрдВ рдмрдВрдж рд╣реИ? _ bash script_ рдпрд╛ _use рдЗрд╕ рдЯреВрд▓ рдХреЛ рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рдерд╛_ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡реИрдз рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред
рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
@dnephin рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ init рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдирд╛ рдХрдВрдЯреЗрдирд░ рдЖрдзрд╛рд░рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ? рд╕рдм рдХреЗ рдмрд╛рдж, рд░рдЪрдирд╛ "рдбреЙрдХрд░ рдХреЗ рд╕рд╛рде рдорд▓реНрдЯреА-рдХрдВрдЯреЗрдирд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдФрд░ рдЪрд▓рд╛рдиреЗ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред
рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдбреЛрдмреА рдХреЛ рджреЗрдЦрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдХреГрдкрдпрд╛ рдпрд╣рд╛рдБ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ :)
рдЗрд╕рдХреЗ рд╕рд╛рде рдХрднреА рдХреБрдЫ рдирд╣реАрдВ рд╣реБрдЖред рдореИрдВ docker-compose
рдлрд╝рд╛рдЗрд▓ рдХреЗ рднреАрддрд░ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рджреЗрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рдЬрд╣рд╛рдВ рд╣рдо рдпрд╣ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ рдХрд┐ @ ahmet2mir рдиреЗ рджрд┐рдпрд╛ рдерд╛ред
рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд╛рдЧреВ рди рд╣реЛрдиреЗ рд╕реЗ рдмрд╣реБрдд рджреБрдЦреА рд╣реИрдВред
рдХреГрдкрдпрд╛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдореБрдЭреЗ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрд┐рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рд╡реЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдЖрд░рдВрдн рдХреЗ рдмрд╛рдж рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдзрдиреНрдпрд╡рд╛рдж
рдпрд╣ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИ рдХрд┐ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ!
рдпрд╣ рдмрд╣реБрдд рдЦрд░рд╛рдм рдлреЙрд░реНрдо рд╣реИ @dnephinред рдЖрдкрдиреЗ рдЗрд╕ рддрд░рд╣ рдХреА рдЕрддрд┐ рдорд╛рдВрдЧ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд░реЛрдХ рд▓рдЧрд╛ рджреА рд╣реИ, рдЬреЛ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдЖрддреНрдо рд╕рдВрд╡рд░реНрдзрди рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдЖрдк рдмрд╛рддрдЪреАрдд рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред
рдореБрдЭреЗ рдЦреЗрдж рд╣реИ, рдореИрдВ рдЗрд╕реЗ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рджреБрдзрд╛рд░реВ рднрд╛рд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рдерд╛, рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдХрдореА рдиреЗ рд╣рдорд╛рд░реЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рдХреБрдЫ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░ рдФрд░ рдЯреАрдореЛрдВ рдХреА рддрд░рд╣ рдЕрдВрд╢ рдЬреЛрдбрд╝рд╛ рд╣реИ, рдФрд░ рдЖрдк рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдмрд╛рдзрд╛ рдмрдиреЗ рд╣реИрдВред
рдУрд╣, рдЪрд▓реЛ рдЗрд╕реЗ unix-way
рдмрдирд╛рддреЗ рд╣реИрдВред
_Just_ (рдорд▓реНрдЯреАрдкреНрд▓реЗрдХреНрд╕ рддрдм) рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП docker-compose up
рд╕реНрдЯрдб рдкрд╛рдЗрдк CMD
?
рддрд╛рдХрд┐ рдРрд╕реА рдпрдорд▓ рдлрд╝рд╛рдЗрд▓
services:
node:
command: sh -
рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛: cat provision.sh | docker-compose up
рдХрдВрдЯреЗрдирд░ рдХрд╛рд░реНрдпрдХрд╛рд░реА uting рдмрд╛рддреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕рд╛рде рдЖрджреЗрд╢реЛрдВ рдЧреБрдЬрд░ рд╕реЗ stdin рдХрд╛ рдмреЗрд╣рддрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
services:
node:
localscript: provision.sh
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдмрд┐рдЯ рд╢реЗрд▓-рд╕реЗрдВрдЯреНрд░рд┐рдХ рдЬреЛ 99% рдкреНрд░рд╛рд╡рдзрд╛рди рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ред
рднрд▓реЗ рд╣реА рд╡реИрдз рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ ... рдпрд╣ рдЕрднреА рднреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореБрдЭреЗ рд╢рд░реНрдо рдЖрддреА рд╣реИ, рдпрд╣рд╛рдБ рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рддрд░рд╣, рдпрд╣ рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рдореЗрд░реЗ +1 рдХреЛ рдореМрдЬреВрджрд╛ + рдХреЗ рдмрдбрд╝реЗ рдвреЗрд░ рдореЗрдВ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ
... рдПрдХ рдФрд░ +1 рдпрд╣рд╛рдБ!
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХреЛрдИ рдЕрдиреБрд░реЛрдз рд╣реИ рддреЛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрдкрдХрд░рдг рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЛ рдХрдард┐рди рдирд╣реАрдВ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдврд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореИрдВ рдЙрд╕ рджрд░реНрд╢рди рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдХрд╛ рдХреЛрдИ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ "рд╣реБрдХ рдХрдорд╛рдВрдб" рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
+1 +1
рдЬрдм рдореИрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдПрдХ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:
docker-start.sh
#!/usr/bin/env bash
set -e
set -x
docker-compose up -d
sleep 5
# #Fix1: Fix "iptable service restart" error
echo 'Fix "iptable service restart" error'
echo 'https://github.com/moby/moby/issues/16137#issuecomment-160505686'
for container_id in $(docker ps --filter='ancestor=reduardo7/my-image' -q)
do
docker exec $container_id sh -c 'iptables-save > /etc/sysconfig/iptables'
done
# End #Fix1
echo Done
@ reduardo7 рддрдм рдЖрдк
@ рдЖрдк рд╕рд╣реА рд╣реИрдВ! рдпрд╣ рдПрдХ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ!
@ reduardo7 рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдХреА рдЧрдИ рдорд╛рдлреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╢рд╛рдпрдж рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рдореИрдВ рд╕рд┐рд░реНрдл рдЗрд╢рд╛рд░рд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдореВрд▓ рдореБрджреНрджрд╛ рдЕрднреА рднреА рдЦрдбрд╝рд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрдВрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред :)
рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ @dnephin рдХрд╛ рд╕реНрдЯреИрдВрдб, рдпрд╣рд╛рдВ рдмрддрд╛рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреИрдЯрд░реНрди рдХрд╛ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреИрд╕реЗ рдПрдХ рдЧрд╛рдЗрдб (рдпрд╛ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг) рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддрд╛рдХрд┐ рджреВрд╕рд░реЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВ?
рдХреЛрдИ рдЕрд╕рд╣рдорддрд┐ рдирд╣реАрдВ рд▓рдЧрддреА рд╣реИ рдХрд┐ рдЗрд╕ рдкреИрдЯрд░реНрди рдХрд╛ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
@MaybeS рдХреЗрд╡рд▓ рдЕрд╕рд╣рдорддрд┐ рдпрд╣ рд╣реИ рдХрд┐ @dnephin рдЕрдкрдиреЗ
@ рд╕рдЪ рдореЗрдВ рд╣рд╛рдБред
onrun
рдХрд╛ рдХреБрдЫ рд░реВрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдЪрдирд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЪрд╛рд╣рдиреЗ рдХрд╛ рдЖрдЬ рдХрд╛ рдЙрджрд╛рд╣рд░рдг
version: "3.3"
services:
gitlab:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'gitlab'
environment:
GITLAB_OMNIBUS_CONFIG: |
# NOTE: this URL needs to be right both for users, and for the runner to be able to resolve :() - as its the repo URL that is used for the ci-job, and the pull url for users.
external_url 'http://gitlab:9090'
gitlab_rails['gitlab_shell_ssh_port'] = 2224
ports:
- '9090:9090'
- '2224:22'
gitlab-runner:
image: gitlab/gitlab-runner:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдзрд╛рд╡рдХ рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рд╣реИ - рдФрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ рдбреЙрдХ-рдХрдореНрдкреЛрдЬрд╝ рдореЗрдВ рдЕрдкрдиреЗ рдорд▓реНрдЯреА-рдХрдВрдЯреЗрдирд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рддреИрдирд╛рддреА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореБрдЭреЗ рдХреБрдЫ рдорд╛рдзреНрдпрдорд┐рдХ рд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ ... рдбреЙрдХреНрд╕?
export GL_TOKEN=$(docker-compose exec -u gitlab-psql gitlab sh -c 'psql -h /var/opt/gitlab/postgresql/ -d gitlabhq_production -t -A -c "SELECT runners_registration_token FROM application_settings ORDER BY id DESC LIMIT 1"')
docker-compose exec gitlab-runner gitlab-runner register -n \
--url http://gitlab:9090/ \
--registration-token ${GL_TOKEN} \
--executor docker \
--description "Docker Runner" \
--docker-image "docker:latest" \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock \
--docker-network-mode "network-based-on-dirname-ew_default"
рдПрдордПрдордПрдо, рдореИрдВ рдХреБрдЫ рд╣реИрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдФрд░ рдХрдВрдЯреЗрдирд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдбреЙрдХ рд╕реЙрдХреЗрдЯ рд╣реИ, рдФрд░ docker exec's
рдХреНрдпрд╛ рд╢рд░реНрдд рд╣реИ рдПрдХ рд░рд╛рд╕реНрддрд╛ рд╣реИ ...ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ:
gitlab-initializer:
image: docker/compose:1.18.0
restart: "no"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./gitlab-compose.yml:/docker-compose.yml
entrypoint: bash
command: -c "sleep 200 && export GL_TOKEN=$(docker-compose -p sima-austral-deployment exec -T -u gitlab-psql gitlab sh -c 'psql -h /var/opt/gitlab/postgresql/ -d gitlabhq_production -t -A -c \"SELECT runners_registration_token FROM application_settings ORDER BY id DESC LIMIT 1\"') && docker-compose exec gitlab-runner gitlab-runner register -n --url http://gitlab:9090/ --registration-token ${GL_TOKEN} --executor docker --description \"Docker Runner\" --docker-image \"docker:latest\" --docker-volumes /var/run/docker.sock:/var/run/docker.sock --docker-network-mode \"simaaustraldeployment_default\""
рдореЗрд░реА рд░рдЪрдирд╛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП - рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓реВрдк / рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЧрд┐рдЯрд▓реИрдм рд╕реАрдзреЗ рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ - sleep 200
рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рддреЛ - рдЖрдк __can__ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреИрдЯрд░реНрди рдХреЛ рд╕реАрдзреЗ docker-compose.yml
рд╣реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рд▓реЗрдХрд┐рди рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреБрдЫ рдХреНрд▓реАрдирд░ рд╕рдорд░реНрдерди рдЪрд╛рд╣рддрд╛ рд╣реВрдБ :)
@SvenDowideit onrun
рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ, рдпрд╣ entrypoint
рдпрд╛ cmd
ред
рдЗрд╕ рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рд╣реБрдХ рднреА рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред $GITLAB_POST_RECONFIGURE_SCRIPT
рдХреЛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкрде рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕рднреА рд╕реЗрдЯрдЕрдк рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЪрд▓реЗрдЧрд╛ (рдЫрд╡рд┐ рдореЗрдВ /assets/wrapper
)ред рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкрде рдкрд░ env рдЪрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдЬреЛ psql + рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдк рд╕рднреА рд╕реЗрдЯ рд╣реИрдВред
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЫрд╡рд┐ рдЗрд╕ рд╣реБрдХ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛, рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдЫрд╡рд┐ рдХреЛ рдмрдврд╝рд╛рдХрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓реВрдк / рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЧрд┐рдЯрд▓реИрдм рд╕реАрдзреЗ рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ - рдиреАрдВрдж 200 рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдпрд╣ "рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж рд╢реБрд░реВ" рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред рдЪреВрдВрдХрд┐ рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╣реБрдХ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡рддрдГ рдЙрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред
рдирд╣реАрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЬреЛ рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ рд╣реИ, рдЙрд╕рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдЖрдкрдХреЛ рдпрд╛рдж рд╣реЛ рдЧрдпрд╛ рд╣реИ:
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рджреЛрдиреЛрдВ рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рди рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ - рддреЛ рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ / рдХрдорд╛рдВрдб _not_ рдореБрдЭреЗ рдпрд╣ рджреЗрддрд╛ рд╣реИред
GL_TOKEN
gitlab рдХрдВрдЯреЗрдирд░ рд╕реЗ рдЖрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП gitlab-runner рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП рдЬреЛ рд╣реИрдХ рдореИрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╡рд╣ рддреАрд╕рд░реЗ рдХрдВрдЯреЗрдирд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП docker/compose
рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ - рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдк рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди / рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ / рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ (рддреБрдЪреНрдЫ) рдЙрджрд╛рд╣рд░рдг рд╣реИ рдмрд╣реБ-рдХрдВрдЯреЗрдирд░ рд╕рдордиреНрд╡рдп рдЬрд┐рд╕рдореЗрдВ рдЕрдзрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдЬрд╛рджреБрдИ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреАрдЬреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ - рдЬрд┐рд╕рдХрд╛ рдореВрд▓ рд░реВрдк рд╕реЗ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореЗрд░реЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХреБрдЫ рд╕реНрд▓реАрдк рд▓реВрдк рд╣реЛрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЧрд┐рдЯрд▓реИрдм рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред
TBH, рдореБрдЭреЗ рд▓рдЧрдиреЗ рд▓рдЧрд╛ рд╣реИ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдПрдХ init-container рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдЦреБрдж рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ docker / рдХрдВрдкреЛрдЬрд╝ рдЗрдореЗрдЬ, _is_ рдЗрд╕ рддрд░рд╣ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИ - рдиреЙрди-рдкреНрд░реЛрдбрдХреНрд╢рди рдХреЗ рд▓рд┐рдП "рдХреЛрд╢рд┐рд╢" рдореБрдЭреЗ рдмрд╛рд╣рд░, рдФрд░ рдпрд╣ рд╕рд┐рд░реНрдл рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ "рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ"ред
_IF_ рдореИрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдЬреАрдм рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдЪреАрдиреА рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛, рд╢рд╛рдпрдж рдореИрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЬрд╛рдКрдВрдЧрд╛:
gitlab-initializer:
image: docker/compose:1.18.0
restart: "no"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./gitlab-compose.yml:/docker-compose.yml
entrypoint: ['/bin/sh']
command: ['/init-gitlab.sh']
file:
path: /init-gitlab.sh
content: |
for i in $(seq 1 10); do
export GL_TOKEN=$(docker-compose -f gitlab-compose.yml -p sima-austral-deployment exec -T -u gitlab-psql gitlab sh -c 'psql -h /var/opt/gitlab/postgresql/ -d gitlabhq_production -t -A -c "SELECT runners_registration_token FROM application_settings ORDER BY id DESC LIMIT 1"')
echo "$i: token($?) == $GL_TOKEN"
ERR=$?
if [[ "${#GL_TOKEN}" == "20" ]]; then
break
fi
sleep 10
done
echo "GOT IT: token($ERR) == $GL_TOKEN"
for i in $(seq 1 10); do
if docker-compose -f gitlab-compose.yml -p sima-austral-deployment exec -T gitlab-runner \
gitlab-runner register -n \
--url http://gitlab:9090/ \
--registration-token ${GL_TOKEN} \
--executor docker \
--description "Docker Runner" \
--docker-image "docker:latest" \
--docker-volumes '/var/run/docker.sock:/var/run/docker.sock' \
--docker-network-mode "simaaustraldeployment_default" ; then
echo "YAY"
break
fi
sleep 10
done
рдпрд╛рдиреА, рдЬреИрд╕реЗ рдХреНрд▓рд╛рдЙрдб-рдЗрдирд┐рдЯ: http://cloudinit.readthedocs.io/en/latest/topics/examples.html#writing -out-рдордирдорд╛рдиреА-рдлрд╛рдЗрд▓реЗрдВ
рд▓реЗрдХрд┐рди рдЬрдм рдпрд╣ рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИ - рд╣рдо _have_ рдПрдХ рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬ-рд╡рд╛рдИрдПрдордПрд▓ рдХреЗ рдЕрдВрджрд░ рд╕реЗ рдЬрдЯрд┐рд▓ рдорд▓реНрдЯреА-рдХрдВрдЯреЗрдирд░ рдЪреАрдЬреЛрдВ рдХрд╛ рд╕рдордиреНрд╡рдп рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИред
рдпрджрд┐ рдЖрдк рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЯреЛрдХрди рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ gitlab-runner
рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЙрд╕ рд╕рдордп рдХреЗ рдкреНрд░рдореБрдЦ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ?
@dnephin рдЬрд┐рд╕ рдХреНрд╖рдг рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдк рдПрдХ рдкреНрд░рдХрд╛рд╢ рд╡рд░реНрд╖ рдФрд░ рдлрд┐рд░ рдХреБрдЫ рдХреЗ рдирд┐рд╢рд╛рди рд╕реЗ рджреВрд░ рд╣реЛрддреЗ рд╣реИрдВред
onrun
entrypoint
рдпрд╛ cmd
ред
entrypoint
/ cmd
рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдХрдВрдЯреЗрдирд░ init
/ PID 1 рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓реЗрдЧрд╛ред
рдЗрд╕ рдФрд░ рдХрдИ рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдЪрд╛рд░ init scripts
, рдЬреЛ рдмреВрдЯрд┐рдВрдЧ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ init
рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдирд┐рдЯ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗрдЯрдЕрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЛред
рдпрд╣ @dnephin рд╢рд╛рдпрдж рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реИ рдЕрдЧрд░ рдЖрдк, рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реЗрдЯ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрдВрдЯреЗрдирд░ рд╕реЗрдЯ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╕реЗ рд╣реЛрдЧреАред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдХреНрдпрд╛ рджреЗрдЦрд╛ рд╣реИ, рдирд╣реАрдВ, рдЗрд╕рдХрд╛ рдПрдХ рдЙрддреНрдкрдиреНрди рд░рд╣рд╕реНрдп - рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдорд▓реНрдЯреА-рдХрдВрдЯреЗрдирд░ рд╕рдордиреНрд╡рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕ рдЫреЛрдЯреЗ рд╕реЗ рдкреНрд▓реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рднреА рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ - рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рд╣реИ рдЬрдирддрд╛ рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдкред
рдпрд╣ рдХреИрд╕реЗ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╣рдо v1 (https://docs.docker.com/compose/compose-comile/compose-file) рдХреЗ рдмрд╛рдж рд╕реЗ рдПрдХ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ entrypoint
рдФрд░ command
рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ -v1 / # рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ) рдФрд░ рдЕрднреА рднреА рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рдиреЗ рдкрд░ onrun
рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП?
TBH, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ onrun
рдкреНрд░рд╢рдВрд╕рдиреАрдп рд╣реИ - рдбреЙрдХрд░, рдпрд╛ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд░ рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ "рдХрдВрдЯреЗрдирд░ рд╕рднреА рдКрдкрд░ рд╣реИрдВ" рдХрд╛ рдЕрд░реНрде рд╣реИ - рдореЗрд░реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЬрдм рддрдХ рдореИрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛, рддрдм рддрдХ рд╡рд┐рдлрд▓ рд░рд╣реЗрдЧрд╛ред рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд "рд╕рд╛рдорд╛рди" рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓рддреА рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рдХреБрдЫ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЛ рдХрд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдФрд░ _if_ рдореИрдВрдиреЗ рд╕рд╣реА рдХрд┐рдпрд╛, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореБрдЭреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдСрдкрд░реЗрдЯрд░ рдХрдВрдЯреЗрдирд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдХрд┐ рдорд▓реНрдЯреА-рдХрдВрдЯреЗрдирд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рддреИрдпрд╛рд░ рд╣реИрдВ, рдХреБрдЫ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, (рдХреБрд▓реНрд▓рд╛ рдФрд░ рджреЛрд╣рд░рд╛рдПрдВ), рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдпрд╛ рддреЛ рдЕрдкрдиреА рдиреМрдХрд░реА рдкреВрд░реА рдХрд░ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рд╢рд╛рдпрдж рдЪреАрдЬреЛрдВ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рддрд╛ рд╣реИред
рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдиреМрдХрд░реА рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬ рдХрдВрдЯреЗрдирд░ рджреНрд╡рд╛рд░рд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВ рд╢рд╛рдпрдж рдЗрд╕ рд╕рдВрдЪрд╛рд▓рдХ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдлрд┐рд░ рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдбреЙрдХрдЯрд░ рдЭреБрдВрдб рдХреЗ рдвреЗрд░ (рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЕрдиреНрдп рдЬрд░реВрд░рддреЛрдВ рдХреЗ рдХрд╛рд░рдг) рд╕реЗ рдирд┐рдкрдЯ рд╕рдХрддреА рд╣реИред
рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЪреАрдиреА рд╣реИ рдЬреЛ рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬрд╝ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЗрд╕рдХреЗ рдХрдВрдЯреЗрдирд░ рдХреЛ "рдпрд╣ рдПрдХ рдСрдкрд░реЗрдЯрд░ рд╣реИ, рдЗрд╕реЗ рдЬрд╛рджреВ рдХреА рдХреНрд╖рдорддрд╛ рджреЗрдВ" рдЬреИрд╕реЗ рдХреБрдЫ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВред
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реБрдирдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ .. рдореИрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдЯреВрд▓ рдХреЛ рджреЗрдЦреВрдВрдЧрд╛ ... рдбреЙрдХ-рдХрдореНрдкреЛрдЬрд╝ рдПрдХ рдмрдбрд╝рд╛ рджрд░реНрдж рд╣реИ .. рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдЖрдк рдпрд╣ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╕рдордЭ рд╕рдХрддреЗ рдХрд┐ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧреА рдЪреАрдЬ рдЬреЛ рдЖрддреА рд╣реИ рдбреЙрдХ-рдХрдореНрдкреЛрдЬрд░ рдПрдХ рдмрд┐рд▓реНрдб рдЯреВрд▓ рд╣реИ ... рдореИрдВрдиреЗ рд╕рдХреНрд░рд┐рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдореИрдВ SIMPLE рдХрдорд╛рдВрдб рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдВред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЙрдХ-рдХрдореНрдкреЛрдЬрд░ рдиреЗ рдЕрднреА рддрдХ рд░рд╛рдЬреНрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ ...
рдореИрдВ рднреА рдХреБрдЫ рдРрд╕рд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдореЗрд░реА рд░рдЪрдирд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ onrun
рд╣реЛ
__BUT__, рди рддреЛ рдХрдВрдЯреЗрдирд░, рдФрд░ рди рд╣реА рдпрд╣ рдЬрд╛рдирдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ onrun
рдорддрд▓рдм рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдСрдкрд░реЗрдЯрд░ рдкреИрдЯрд░реНрди рдореМрдЬреВрдж рд╣реИ, рдФрд░ рдореИрдВрдиреЗ https://github.com/docker/compose/issues/1809#issuecomment -362126930 рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреНрдпреЛрдВ рдмрдирд╛рдП
рдпрд╣ __is__ рдЖрдЬ рддрдХ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ - рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЖрдк рдПрдХ onrun
рд╕реЗрд╡рд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЕрдиреНрдп рд╕реЗрд╡рд╛рдПрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ (рдЧреАрддрд╛рд▓рд╛рдм рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬреЛ рдХрд┐ рдереЛрдбрд╝рд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ) рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдХрд░реЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рдореЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЬреЛ рдХреБрдЫ рднреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЕрдЧрд░ рд╡рд╣рд╛рдБ _is_ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдЙрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ, рдФрд░ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдХреБрдЫ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ!
рдореИрдВ рднреА рдХреБрдЫ рдРрд╕рд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдореЗрд░реЗ рдХрдВрдкреЛрдЬ рдХреА рдЧрдИ рдлрд╛рдЗрд▓ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдП
рд▓реЗрдХрд┐рди, рди рддреЛ рдХрдВрдЯреЗрдирд░, рдФрд░ рди рд╣реА рд░рдЪрдирд╛ рдХреЗ рдкрд╛рд╕ рдпрд╣ рдЬрд╛рдирдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдСрдирд░реВрди рдХрд╛ рдорддрд▓рдм рдХреНрдпрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВ, onrun
рдкреНрд░рддрд┐ рд╕реЗрд╡рд╛, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЬрдм рдкрд╣рд▓реЗ рдХрдВрдЯреЗрдирд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХрдВрдЯреЗрдирд░ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдЕрдиреБрд╢рдВрд╕рд┐рдд рддрд░реАрдХрд╛ рд╣реИред
рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕рдорд░реНрдерди рдХрд╛ рдореБрджреНрджрд╛ рдкрд╣рд▓реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдХрдорд╛рдВрдб docker exec
рдорд╛рдзреНрдпрдо рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдУрдПрд╕ рдЕрдЬреНрдЮреЗрдпрд╡рд╛рджреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ рдХрд┐ RUN рдХрд╛ рдорддрд▓рдм рдбреЙрдХрдлреЗрд░рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд▓рд┐рдирдХреНрд╕ рдХрдорд╛рдВрдб рд╕реЗ рдирд╣реАрдВ рд╣реИред
https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-docker/manage-windows-dockerfile
рдЕрднреА рднреА onrun
рд╕реБрд╡рд┐рдзрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реИ
рдореБрдЭреЗ рдЗрд╕ onrun
рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдЗрд╕ рдЙрдкрдХрд░рдг рдореЗрдВ рдерд╛ред рдЗрд╕ рдЕрднрд╛рд╡ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдХрд╛рд░рдг рдЕрдм рдореБрдЭреЗ 2 рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореИрди рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рджреЛрд╕реНрддреЛрдВ, рдЕрдЧрд░ рдореИрдВ рдЗрд╕ docker-compose
рдЖрд╕рдкрд╛рд╕ рдПрдХ рд░реИрдкрд░ рдмрдирд╛рдКрдВ рдФрд░ рдЗрд╕ onrun
рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЕрдиреБрдорддрд┐ рджреВрдВ? рдХреНрдпрд╛ рдЖрдк рд▓реЛрдЧ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВрдЧреЗ?
@wongjiahau рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? https://github.com/docker/compose/issues/1809#issuecomment -348497289
@ reduardo7 рд╣рд╛рдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ docker-composei
рдирд╛рдордХ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрджрд░ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛, рдФрд░ docker-composei.yml
рдЬрд┐рд╕рдореЗрдВ onrun
рд╡рд┐рд╢реЗрд╖рддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред
Btw, docker-composei
рдЕрд░реНрде docker-compose improved
ред
рдЕрд╕рд▓реА рд╕рдорд╛рдзрд╛рди рд╕рдВрднрд╡рддрдГ рдПрдХ 'рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд░' рдЫрд╡рд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ 'рдРрдк рдЗрдореЗрдЬреЗрд╕' (рд╕рдВрднрд╡рддрдГ рдбреЙрдХрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХреЛ рдЪрд▓рд╛рддреА рд╣реИ (рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдФрд░ рдЪрд▓рддреА рд╣реИред рдЕрдиреНрдпрдерд╛ рд╣рдо рд╣рдореЗрд╢рд╛ рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреВрдЫреЗрдВрдЧреЗ рдЬреЛ "рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╣рдо рдЗрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ"ред
рддреЛ рд╣рдореЗрдВ рднреА рдбреЛрдХрд░ рдХреЗ рднреАрддрд░ рдбреЙрдХрдЯрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ...
рдмрд╕ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдПред onrun рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдкреНрд░рдорд╛рдг рдХреЛ рдереЛрдбрд╝рд╛ рдЪреМрдбрд╝рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╢рд╛рдпрдж рдХрд┐рд╕реА рдХреЛ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ 'рд╡рдирд╡реЗрдВрдЯ' рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдПрдХ onrun рд╣реЛрдЧрд╛ред
рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдЪрд▓рд┐рдд рджрд┐рд╢рд╛ рдХреЛ рдЖрддреНрдо-рдирд┐рд╣рд┐рдд, рдкреНрд░рддрд┐ рдХрдВрдЯреЗрдирд░ рдПрдХ-рд╕реЗрд╡рд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдХрдВрдЯреЗрдирд░ рдХреЛ рдЕрдкрдиреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рдВрджрд░реНрдн рдЬрд╛рдЧрд░реВрдХрддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрддреНрдордирд┐рд░реНрднрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрд╕ рд╕реЗ рдХреНрдпрд╛ рдмрд╣рддрд╛ рд╣реИ рдХрдореНрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдорд╛рдзреНрдпрдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рдмреЛрд▓реНрдЯ-рдСрди рд╕реНрдХреНрд░рд┐рдкреНрдЯред рдЙрд╕ рдХреЗ рдЦрд┐рд▓рд╛рдл рдмрд╣рд╕ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдХреБрдЫ рдЖрддреНрдо-рдЕрд╡рд╢реЛрд╖рд┐рдд рдЬрд╝реАрд▓реЛрдЯ рдирд╣реАрдВ рд╣реИрдВред
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд░реЗрдбрд┐рд╕ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдореЗрд░реЗ рд░реЗрдбрд┐рд╕ рдХрдВрдЯреЗрдирд░реЛрдВ рдиреЗ рд▓реБрдЖ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ред рд╕рд╛рдорд╛рдиреНрдп рдЧреИрд░ рдХрдВрдЯреЗрдирд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдореБрдЭреЗ рдкреЛрд╕реНрдЯ-рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдордб рдорд┐рд▓рддрд╛ рд╣реИред рд╕рд┐рд╕реНрдЯреЗрдо рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рд╛рде рд╕рд░рд▓ рдФрд░ рд╕реБрд╕рдВрдЧрддред рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЕрдкрдиреА рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдореМрдЬреВрдж рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рд▓рд╛рд╣ рдХреЗ рд░реВрдк рдореЗрдВ, рдХреГрдкрдпрд╛ рд╕рд┐рджреНрдз рд╕рдВрдЪрд╛рд▓рди рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВ рди рдХрд┐ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВред
рдЗрд╕рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди (рдЗрд╕ рд╕рд╛рд░реЗ рдзрд╛рдЧреЗ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж) рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ ... рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдореИрдВ docker- рд░рдЪрдирд╛ рдХреЛ рд╣рдЯрд╛ рджреВрдВрдЧрд╛ (рд╣рдо docker cmd рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...)
рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рдмрд╛рдд рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрд╡ рдЬреЛ рдЖрдкрдХреА рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ :)
рддрд░реНрдХреЛрдВ рдФрд░ рдкреНрд░рддрд┐рд╡рд╛рджреЛрдВ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рд╕рд░рд▓ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ (рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдШрдЯрдирд╛ рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ ) рд╕реЗ
рдХреГрдкрдпрд╛, рдУрдкрди рд╕реЛрд░реНрд╕ рдХреЛ рд╕рд╣реА рдорд╛рдпрдиреЗ рдореЗрдВ _open_ рдмрдирд╛рддреЗ рд╣реИрдВред
рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рдХреЛрдИ рдЕрджреНрдпрддрди? рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ?
@ v0lume рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдереЗ
рд╡рд╣рд╛рдБ рдЕрднреА рднреА рдПрдХ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд▓рдЧрддрд╛ ... рдореИрдВ рдПрдХ hacky workaround рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ред
Docker-compose.yml рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг "2.1" рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдЖрдк рдЗрдореЗрдЬ рдХреЗ рдЕрдВрджрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд╛рд╕реНрдереНрдп рдкрд░реАрдХреНрд╖рдг рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдЗрд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
version: '2.1'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:5.4.3
healthcheck:
test: |
curl -X PUT elasticsearch:9200/scheduled_actions -H "ContentType: application/json" -d '{"settings":{"index":{"number_of_shards":'1',"number_of_replicas":'0'}}}' &&
curl --silent --fail localhost:9200/_cat/health ||
exit 1
interval: 11s
timeout: 10s
retries: 3
environment:
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms1g -Xmx1g
- xpack.security.enabled=false
main:
image: alpine
depends_on:
elasticsearch:
condition: service_healthy
рдпрджрд┐ рдЖрдк рдЬреЛ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдкрд░реАрдХреНрд╖рдг рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд╡рд╣ рдХреЛрдб> = 1 рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХрдИ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХрд┐рд╕реА рд╕реЗрд╡рд╛ рдХрд╛ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдкрд░реАрдХреНрд╖рдг рдХреЗрд╡рд▓ рддрднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдХреЛрдИ рдЕрдиреНрдп рд╕реЗрд╡рд╛ рдЙрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреЗрдЦреА рдЧрдИ service_healthy
рд╕реНрдерд┐рддрд┐ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреА рд╣реИред
рдореБрдЭреЗ @ рдЯреА-рд╡реАрдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд╕рдВрдж рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рднреА рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рдФрд░ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ ... рд╣реИрдХ:
# Run Docker container here
until echo | nc --send-only 127.0.0.1 <PORT_EXPOSED_BY_DOCKER>; do
echo "Waiting for <YOUR_DOCKER> to start..."
sleep 1
done
# Do your docker exec stuff here
+1
рдореИрдВ рдЗрд╕ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреБрдмреЗрд░рдиреЗрдЯ рдЬреИрд╕реЗ рдЕрдиреНрдп рдбреЙрдХрдЯрд░ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЬреАрд╡рди рдЪрдХреНрд░ рд╣реБрдХ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рдкреНрд░рд▓реЗрдЦрд┐рдд
рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рджреЗрдВ рдЬреЛ рдЖрдк рдбреЙрдХрдлрд╛рдЗрд▓реНрд╕ рдХреЗ рд╕рд╛рде рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдПрдХ рд╡реЙрд▓реНрдпреВрдо рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рдЯреАрдХ рдирд╛рдо рдХреЛ рдЬрд╛рдирдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░ рд╕реЗ рд╡реЙрд▓реНрдпреВрдо рддрдХ рдПрдХ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдорд╛рдорд▓рд╛ рдерд╛ рдХрд┐ рдбреАрдЖрдИрдЖрд░ рдирд╛рдо рдЙрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧрддрд┐рд╢реАрд▓ рдерд╛ рдЬрд┐рд╕ рдкрд░ рдореИрдВ рддреИрдирд╛рдд рдерд╛ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдПрдХ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛ред
рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдорд┐рд▓рд╛ рдФрд░ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рджреВрд╕рд░реА рддрд░рдл рд╣реБрдХ рдореБрдЭреЗ рд▓рдЪреАрд▓рд╛рдкрди рдФрд░ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдЪреАрдЬреЛрдВ рдХреЛ рд╣реИрдХ рдХрд░рдиреЗ рдФрд░ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдЖрдЧреНрд░рд╣ рдХреЗ рдмрд┐рдирд╛ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрдВрдЧреЗред
рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рдореБрджреНрджрд╛ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдПрдХ-рджреЛ рд╕рд╛рд▓ рд╕реЗ рдбреЙрдХрдЯрд░ рдФрд░ рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЕрдм рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореИрдВ рд╣рд░ рд╕рд╛рд▓ рдпрд╛ рджреЛ рд╕рд╛рд▓ рдореЗрдВ рд╡рд╛рдкрд╕ рдЬрд╛рдВрдЪ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВрдЯреЗрдирд░реНрд╕ рдХреЗ рд░рд╡реИрдпреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореИрдВ рдмрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реВрдВрдЧрд╛ред рдЦреБрд╢реА рд╣реИ рдХрд┐ рдЬреНрдпрд╛рджрд╛ рд╕рдордп рдирд┐рд╡реЗрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕ рд╢реБрд░реБрдЖрдд рдХреЛ рдмрд╣реБрдд рдХрдо рдкрд╛рдпрд╛ред
рдкреНрд░реЛ рдЯрд┐рдк: рдпрджрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЬреЛ рдЕрдкрдиреЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреВрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЙрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рднрд╡рди рдХреЗ 'рдХреНрдпреЛрдВ' рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рдВ, рдЖрдк рд╕рдлрд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд▓реЛрдЧреЛрдВ рдиреЗ рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рдЗрд╕ рдЪреАрдЬ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рдЖрдк рд╢рд╛рдпрдж рдЙрдиреНрд╣реЗрдВ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдкрд░ рдУрдкрди рдереЗред
рд╢реБрднрдХрд╛рдордирд╛рдПрдВред
рдпрджрд┐ рдЖрдк рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдЬреЛ рдХреБрдЫ рднреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЙрд╕реЗ рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВред
рдмрд╕ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдПред onrun рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдкреНрд░рдорд╛рдг рдХреЛ рдереЛрдбрд╝рд╛ рдЪреМрдбрд╝рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╢рд╛рдпрдж рдХрд┐рд╕реА рдХреЛ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ 'рд╡рдирд╡реЗрдВрдЯ' рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдПрдХ onrun рд╣реЛрдЧрд╛ред
рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджрд┐рдП рдЧрдП рд╣реИрдВ:
services:
web:
image: node:8-alpine
depends_on:
- db
db:
image: postgres:alpine
onrun: "echo hi"
рдХреНрд░реЙрд╕-рдИрд╡реЗрдВрдЯ рд╕реНрдХреНрд░реИрдк рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛?
web:
events:
db_onrun: "connectAndMigrate.sh"
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдЗрд╕реЗ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╕реАрдзрд╛ рд╣реИ рдХрд┐ рди рдХреЗрд╡рд▓ рдЖрдк, рдЬреЛ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╕реНрдЯреИрдХ рдХреА рд░рдЪрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЖрдкрдХреА рдЯреАрдо рдХреЗ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рднреАред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░ mkcert
рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдХрдВрдЯреЗрдирд░ рдпрд╛ рдбреЙрдХрд░реАрдлрд╛рдЗрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╕реНрдЯреЗрдЬ / рдкреНрд░реЛрдбрдХреНрд╢рди рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдЙрдкрдХрд░рдг рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдЙрдЪрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдФрд░ рд╣рд░ рдХреЛрдИ рдЬреЛ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЙрд╕рдХреЗ рдкрд╛рд╕ рднреА рдХреЛрдИ рд╕реБрд░рд╛рдЧ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ?
рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдЬреЛрдбрд╝рдирд╛:
рдПрдХ WordPress рдЙрджрд╛рд╣рд░рдг рдХреА рдЬрд░реВрд░рдд рд╣реИред рдореЗрд░рд╛ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рд▓рд┐рдЦрд╛ред docker-compose up
- рдЙрдлрд╝! рдкреНрд▓рдЧрдЗрдиреНрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдлрд╝рд╛рдЗрд▓ рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ... рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдиреНрдп рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рдХрдВрдЯреЗрдирд░ рдХреЗ рдЪрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╕реЗрдЯ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╣реЛрд╕реНрдЯ рд╕реЗ рдХреБрдЫ рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрд╛рдЗрдВрдб рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рд╕реЗ chown -Rf www-data.www-data /var/www/wp-content
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП fs рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рд╣реИред рдореЗрд░рд╛ рдЕрдкрдирд╛ рдбреЙрдХрд░реАрдлрд╛рдЗрд▓ рд▓рд┐рдЦреЗрдВ рдФрд░ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ, рдмрд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП? рдЬреЛ рдореБрдЭреЗ рдмреЗрд╡рдХреВрдлреА рд▓рдЧрддреА рд╣реИред
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП, рдКрдкрд░ рджрд┐рдП рдЧрдП healthcheck
рд╣реИрдХ рдиреЗ рдореБрдЭреЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред рдореИрдВ рд╡реЗрдм рдкрд░ рдЕрдиреНрдп рдкреГрд╖реНрдареЛрдВ рдХреЛ рдбреЙрдХрдЯрд░ рд╡реЙрд▓реНрдпреВрдо рдкрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рдореБрджреНрджреЗ рдкрд░ рдмрд╛рдд рдХрд░рддреЗ рд╣реБрдП рджреЗрдЦрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕реБрдЭрд╛рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗред
рдЦреБрд╢реА рд╣реИ рдХрд┐ рдпреЗ рдЧреЗрдЯрдХреАрдкрд░, @dnephin , @aanand , @
01) рд╢рд╢рд┐рд╢реЛрд╡
режреи) рдлрд╛рд╕реЛрдмрд╛рд░
03) рдмрд▓реБрдЖ 11
режрек) рд╡реЗрдм-рдЯреЗрдб
05) v0lume
06) рд╡реЗрдмрдкреЙрд▓рд┐рд╕
07) Skull0ne
08) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрд╡рд╛
09) рд╡реЛрдВрдЧрдЬрд┐рд╣рд╛рдК
10) рдПрдордПрдлрдХреНрдпреВ
11) рдпреЛрд╕реЗрдлреНрд░реЛ
резреи) рдмрдЧреЗрд░рдо
13) рджрдХрд╕рдо
14) рдУрдореНрд┐рдб
резрел) рджрдВрддреЗрд░рдмрд░рд╛
16) рд╡рд┐рд▓реАрдВрдЧ
17) рд╢рд╛рд░реНрдкрдбреЗрдордорд╛рд░реНрд╢рд▓
18) рдЦреЛ-рд╡рд╛рд╣рдХ
19) рднреВрдд
20) рд░реЙрдбрд░рд┐рдЧреЛрд░реЛрдбреНрд░рд┐рдЧреНрд╕рдХреЛрд╕реНрдЯрд╛
21) рдбреЗрдЯрд╛рдЯрд╛рдЗрдкрд╡реЙрдЗрдб
реиреи) рдбреЗрдХреНрд╕рдЯреНрд░рдореНрдм
реирей) рд▓рдЦрдирд╛рде
24) рдЖрдХрд░реНрд╖рдХ-рдЪрд┐рдкрдЪрд┐рдкрд╛
реирел) рд░рд╡ 84рек
26) рдбреЛрдкреНрд░реА
27) рдЕрд╣рдордореЗрдЯ 2рдореАрд░
28) рдореЛрдирдЯреЗрд░ 82
29) рдбрд┐рд╕реЙрд░реНрдбрд┐рдпрдирдлрд╝рд┐рд╢
30) рдЬрд╕реЛрдиреНрд╣рд░рд╕
рейрез) рдлрд╝рдлрд╝рд░рд╛рд░рд┐рд╕
32) рд╣рд╛рдЗрдкрд░рдЧрд┐рдЧ
33) рд╕реВрд░реНрдпрд╛рд╕реНрдд
34) sthulb
рдФрд░ рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХрд╣рд╛ рдирд╣реАрдВ? рдПрдХ 3:
01) dnephin
режреи) рдЖрдирдВрдж
03) рдкрд┐рдВрдбрд▓реА-
рд╣рдореНрдордо ... 34 рд╕реЗ 3 ...
@ rm-rf-etc рдЕрдЪреНрдЫреА рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ ... рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ @dnephin рдпрд╛ @aand рдЕрдм рдбреЙрдХрдЯрд░ - рдХрдВрдкреЛрдЬ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рднрд╛рдЧреНрдп рдХреЗ рд╕рд╛рде, рдбреЛрдХрд░ рдвреЗрд░ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд░рдЪрдирд╛ рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреЛрдИ рдЯреАрдо рдирд╣реАрдВ рдмрдЪреЗрдЧреА рдФрд░ рд╣рдо рдлрд┐рд░ рд╕реЗ рдЙрддреНрдкрд╛рдж рдкрд░ рдЖрдЧреЗ рдХреА рдкреНрд░рдЧрддрд┐ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред
рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдЬреЛрдбрд╝рдирд╛:
рдПрдХ WordPress рдЙрджрд╛рд╣рд░рдг рдХреА рдЬрд░реВрд░рдд рд╣реИред рдореЗрд░рд╛ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рд▓рд┐рдЦрд╛ред
docker-compose up
- рдЙрдлрд╝! рдкреНрд▓рдЧрдЗрдиреНрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдлрд╝рд╛рдЗрд▓ рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ... рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдиреНрдп рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рдХрдВрдЯреЗрдирд░ рдХреЗ рдЪрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╕реЗрдЯ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╣реЛрд╕реНрдЯ рд╕реЗ рдХреБрдЫ рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрд╛рдЗрдВрдб рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рд╕реЗchown -Rf www-data.www-data /var/www/wp-content
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП fs рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рд╣реИред
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рдЕрдкрдиреА рд░рдЪрдирд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ user
рд╕рдВрдкрддреНрддрд┐ рднреА
рдореЗрд░рд╛ рдЕрдкрдирд╛ рдбреЙрдХрд░реАрдлрд╛рдЗрд▓ рд▓рд┐рдЦреЗрдВ рдФрд░ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ, рдмрд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП? рдЬреЛ рдореБрдЭреЗ рдмреЗрд╡рдХреВрдлреА рд▓рдЧрддреА рд╣реИред
рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЖрдкрдиреЗ рдПрдХ рдордЬрдмреВрдд рд░рд╛рдп рдмрдирд╛рдИ рд╣реИ; рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзрд╛рд░ рдЫрд╡рд┐ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЙрдХрдлрд╛рдЗрд▓ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ "рдмреЗрд╡рдХреВрдл" рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╕рднреА рдЖрдзрд╛рд░ рдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рдореВрд▓ рдЖрд╢рдп рдпрд╣реА рд╣реИред
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП, рдКрдкрд░ рджрд┐рдП рдЧрдП
healthcheck
рд╣реИрдХ рдиреЗ рдореБрдЭреЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред рдореИрдВ рд╡реЗрдм рдкрд░ рдЕрдиреНрдп рдкреГрд╖реНрдареЛрдВ рдХреЛ рдбреЙрдХрдЯрд░ рд╡реЙрд▓реНрдпреВрдо рдкрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рдореБрджреНрджреЗ рдкрд░ рдмрд╛рдд рдХрд░рддреЗ рд╣реБрдП рджреЗрдЦрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕реБрдЭрд╛рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗредрдЦреБрд╢реА рд╣реИ рдХрд┐ рдпреЗ рдЧреЗрдЯрдХреАрдкрд░, @dnephin , @aanand , @
рд╣рд╛рдБ, рдЕрдЪреНрдЫрд╛ рд░рд╡реИрдпрд╛ рджреЛрд╕реНрддред : рдбреА
@ rm-rf-etc рдЕрдЪреНрдЫреА рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ ... рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ @dnephin рдпрд╛ @aand рдЕрдм рдбреЙрдХрдЯрд░ - рдХрдВрдкреЛрдЬ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рд╣рд╛рдБ, рдЕрдм рдХреБрдЫ рд╕рд╛рд▓ рд╣реЛ рдЧрдП рд╣реИрдВ - рдЙрдиреНрд╣реЗрдВ рдкреБрд░рд╛рдиреЗ рдореБрджреНрджреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИред
рднрд╛рдЧреНрдп рдХреЗ рд╕рд╛рде, рдбреЛрдХрд░ рдвреЗрд░ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд░рдЪрдирд╛ рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреЛрдИ рдЯреАрдо рдирд╣реАрдВ рдмрдЪреЗрдЧреА рдФрд░ рд╣рдо рдлрд┐рд░ рд╕реЗ рдЙрддреНрдкрд╛рдж рдкрд░ рдЖрдЧреЗ рдХреА рдкреНрд░рдЧрддрд┐ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред
ЁЯЩД
@ рдкрд┐рдВрдбрд▓реА- рд▓реЗрдХрд┐рди рдЖрдкрдиреЗ рдЗрд╕реЗ рдЙрд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдкрд┐рдВрдЧ рдХрд┐рдпрд╛
рдореИрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рднрд╛рдЧрд╛ рдФрд░ рднрд▓реЗ рд╣реА рдЗрд╕реЗ рдореЗрд░реЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЖрдк 2.1 рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ imo рдХреЛ рдмрджрдмреВ рджреЗрддрд╛ рд╣реИред
рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдордирдореМрдЬреА рд╣реИ рдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реБрдЦ рд╕реЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╣рд░ рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЦреБрдж рдХреА рдбреЙрдХрдЯрд░ рдЫрд╡рд┐рдпрд╛рдВ рдмрдирд╛рдиреА рдЪрд╛рд╣рд┐рдПред
рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ "рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрд╕реЗ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред"
рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдХреЛрдИ рдирдИ рд╕реЗрд╡рд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдпрд╛ рдЖрдк рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ .. рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП MongoDB рдпрд╛ MySQL рдбреЙрдХрд░ рдХреА рдЫрд╡рд┐, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдирдИ рдбреЙрдХрдлрд╛рдЗрд▓ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╕рдВрднрд╡рддрдГ рдЗрд╕реЗ рдЕрдкрдиреА рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдзрдХреЗрд▓рдирд╛ рд╣реЛрдЧрд╛ред
рдпрд╣ рд╕рдордп рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдмрд░реНрдмрд╛рджреА рд╣реИ, рдЕрдЧрд░ рдЖрдк рд╕рд┐рд░реНрдл image: mongo:3.0.2
image: mongo:3.0.3
рдЕрдкрдиреЗ docker-compose.yml рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рдмреЗрдХрд╛рд░ рд╣реИред
рдореИрдВ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЛ рдбреЙрдХрд░рдлрд╛рдЗрд▓реНрд╕ рдФрд░ docker build
рд╕рд╛рде рдкрд░реЗрд╢рд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рд╕реЗрд╡рд╛ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдпрд╛ рдмрджрд▓рдирд╛ рд╣реИ рдЬреЛ рд╕рдВрднрд╡рддрдГ рднреА рдирд╣реАрдВ рд╣реИ рдПрдХ рдЖрдзрд╛рд░ рдЫрд╡рд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдФрд░ рддрд░реНрдХ рдпрд╣ рд╣реИ рдХрд┐ рд╣рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднреА рдмрджрдмреВ рдЖ рд░рд╣реА рд╣реИред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдирд╣реАрдВ рд╣реИ рдпрд╣ рд╕рд┐рд░реНрдл docker
рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдпрд╣ рднреА рд╕рд╡рд╛рд▓ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ docker run
, docker build
, docker exec
, docker pull
рдЖрджрд┐ рд╕рднреА рдПрдХ рд╣реА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред рддрд░реНрдХ рдЕрдм рдкрд╛рдЦрдВрдбреА рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд╣реИ рдирд╛?
@ shin-, рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд┐рдпрд╛ рдФрд░ рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕рдВрдкрддреНрддрд┐ рдмрд╛рдЗрдВрдб рдорд╛рдЙрдВрдЯреЗрдб рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЗ рдорд╛рд▓рд┐рдХ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреБрди: рд░рд╡реИрдпрд╛: рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдореБрдЭрд╕реЗ рд╕рд╣рдордд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдордЬрдмреВрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдВред рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рд╡реНрдпрдХреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдорд╛рдВрдЧреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЖрдк рдФрд░ рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ?
рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬреИрд╕реЗ рдХрд┐ onrun: рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдХрдВрдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рджрд┐рди рдХрд╛ рд╣реВрдВ рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдЙрдкрдХрд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ docker рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛ рдмреЗрдорд╛рдиреА рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░ рд╕реЗ рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдПрдХ рдЯреЛрдХрди рдЗрдВрдЬреЗрдХреНрд╖рди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рдореЗрд░рд╛ рдбреЙрдХрдлрд╛рдЗрд▓ рдкрд╣рд▓реЗ рд▓рдЪреАрд▓рд╛ рдерд╛, рдЕрдм рдбреЙрдХ-рдХрдВрдкреЛрдЬрд░ рдХреЗ рд▓рд┐рдП рдпреБрдЧреНрдорд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рд╕рд░рд▓ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдФрд░ рд╕рдорд╛рдзрд╛рдиред
рд▓рд╛рдирдд рд╣реИ, рдореИрдВрдиреЗ рдЬрд╡рд╛рдм "рдареАрдХ рд╣реИ рджреЛрд╕реНрддреЛрдВ, рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реЗ рдзрд╛рдЧреЗ рдХреА рд╣реЛрдкрд┐рдВрдЧ рдкрдврд╝реА, рд╣рдордиреЗ рдЖрдЦрд┐рд░рдХрд╛рд░ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рд╣рдо рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ"ред рдпрд╣ рджреЗрдЦрдХрд░ рджреБрдЦреА рд╣реЛрдХрд░ рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝реЗред
+1 рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП!
@fabiomolinar , рд╕рдорд╛рдзрд╛рди рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ, рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдЙрддреНрдкрд╛рджрди swarms рдореЗрдВ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдШрдЯрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред
рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдВрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
#### configure a service to run only a single instance until success
x-task: &task
# for docker stack (not supported by compose)
deploy:
restart_policy:
condition: on-failure
replicas: 1
# for compose (not supported by stack)
restart: on-failure
рдЬрдм рддрдХ рд╡реЗ рд╕рдлрд▓ рди рд╣реЛрдВ рддрдм рддрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдирд╛ред рд╣рдо рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдФрд░ рд╕реЗрдЯрдЕрдк рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рд╕реБрдЦрдж рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рдорд╛рд░реЗ рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреЛрдЬ рдФрд░ рд╣рдорд╛рд░реЗ рд╕реНрдЯреИрдХ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВред
рдЬреЛ рд╕реЗрд╡рд╛ рдХрд╛рд░реНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ рдЙрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛рд░реНрдп рдкреВрд░рд╛ рди рд╣реЛрдиреЗ рдкрд░ рдХреБрдЫ рдЗрдирд╛рдпрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрдм рддрдХ рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЧрд▓рддрд┐рдпрд╛рдБ рдХрд░рддреЗ рд╣реИрдВ, рддрдм рддрдХ рдпрд╣ рдареАрдХ рд╣реИ, рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рдПрдХ рдЕрдВрддрд┐рдо рд╕реНрдерд┐рд░рддрд╛ рдорд┐рд▓рддреА рд╣реИ рдЬреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░реЗрдЧреАред
рдпрд╣ рднреА рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд╕рд░реНрд╡рд┐рд╕ рдХрдВрдЯреЗрдирд░ рдкреНрд░реА рдФрд░ рдкреЛрд╕реНрдЯ рдЯрд╛рд╕реНрдХ рдкреВрд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдбреЗрдЯрд╛рдмреЗрд╕ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЬреИрд╕реЗ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрд╢реНрд░рд┐рдд рд╕реЗрд╡рд╛рдПрдВ рдкреНрд░реА-рдФрд░ рдкреЛрд╕реНрдЯ-рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╕реНрдХреАрдорд╛ рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП .. рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдХреБрдЫ рд╕реЛрдЪ рдХреЛ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕рдордиреНрд╡рдп рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рднреА рдЬреАрд╡рди рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрдереНрдп рд╣реИ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд░реЛрд▓рд┐рдВрдЧ рдЕрджреНрдпрддрди рдХрд░рдирд╛ред
@fabiomolinar , рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рд╣рдо рдЕрдкрдиреА
#### configure a service to run only a single instance until success
x-task: &task
# for docker stack (not supported by compose)
deploy:
restart_policy:
condition: on-failure
replicas: 1
# for compose (not supported by stack)
restart: on-failure
#### configure a service to always restart
x-service: &service
# for docker stack (not supported by compose)
deploy:
restart_policy:
condition: any
# for compose (not supported by stack)
restart: always
services:
accounts: &accounts
<<: *service
image: internal/django
ports:
- "9000"
networks:
- service
environment:
DATABASE_URL: "postgres://postgres-master:5432/accounts"
REDIS_URL: "hiredis://redis:6379/"
accounts-migrate:
<<: *accounts
<<: *task
command: ./manage.py migrate --noinput
@Dopry рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдорд▓рд╛ рдХреБрдЫ рд╕рд░рд▓ рдерд╛ред рдореБрдЭреЗ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж, рдХреЗрд╡рд▓ рдКрдкрд░ рдФрд░ рдЪрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдХреБрдЫ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдЖрдЬ рдореБрдЭреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдорд┐рд▓рд╛, рдЬреЛ рдХрд┐ рдПрдХ рдПрдХрд▓ CMD
рд▓рд╛рдЗрди рдХреЗ рднреАрддрд░ рдХреБрдЫ рдЫреЛрдЯреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд░рд╣рд╛ рдерд╛ред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╕рд░реНрд╡рд░ рдФрд░ рддреИрдирд╛рддреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХреНрд░рдорд╢рдГ server
рдФрд░ deploy
рдЬрд╛рддрд╛ рд╣реИред рдореИрдВрдиреЗ рддрдм рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:
CMD set -m; server $ deploy && fg server
рдКрдкрд░ рджреА рдЧрдИ рд▓рд╛рдЗрди рдкрд░ рдмреЙрд╢ рдХрд╛ рдореЙрдиреАрдЯрд░ рдореЛрдб рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ, рдлрд┐рд░ рдпрд╣ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдкрд░ server
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рдпрд╣ deploy
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪрд▓рд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдВрдд рдореЗрдВ рдпрд╣ server
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд▓рд╛рддрд╛ рд╣реИред рдЕрдЧреНрд░рднреВрдорд┐ рдлрд┐рд░ рд╕реЗ Docker
рдХрдВрдЯреЗрдирд░ рдХреЛ рдорд╛рд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдПред
рдЬрдм рд╣рдо рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ docker-compose up
рдЪрд▓рд╛рдиреЗ рдкрд░ рдХрдВрдЯреЗрдирд░ рдпрд╛ рд╣реЛрд╕реНрдЯ рдкрд░ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдЯрд┐рдк рд╣реИ?
рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрдЬрдмрд╛рди рдкрд░ рдХрд┐рд╕реА рднреА рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдкрд░рддреЗрдВ рд╕рдордЭреМрддрд╛ рд╣реЛ рдЬрд╛рдПрдВрдЧреА, рд▓реЗрдХрд┐рди рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рдХрдВрдЯреЗрдирд░ рд╕реЗ рдкрд╣рд▓реЗ rm
рдПрдХ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдпрд╛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рджреМрд░рд╛рди рд▓реЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдЬрдмрд╛рди рдФрд░ рдХрдВрдЯреЗрдирд░ рджреЛрдиреЛрдВ рдкрд░ рд╕реБрд▓рдн рд╣реИред рдореИрдВ рдПрдХ рдХрд╕реНрдЯрдо рдбреЙрдХрд░ рдЫрд╡рд┐ рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдпрд╛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ rm
рдФрд░ рдлрд┐рд░ docker-compose
рдЪрд▓реЗред
рдзрдиреНрдпрд╡рд╛рдж!
@fabiomolinar , рдЖрдкрдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреБрдЫ 12 рдХрд╛рд░рдХ рдРрдк рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓реЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдБрдЪреЗ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдЙрдирдХреЗ рд╕рд╛рде рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ред
рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЬреЛ рдЖрдкрдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИрдВ
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдХрд╛рдЙрдВрдЯрд░-рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рд╣рдорд╛рд░реЗ рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкреНрд░реИрдХреНрдЯрд┐рд╕ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдбреЙрдХ-рдХрдВрдкреЛрдЬрд╝, рдбреЙрдХрд░реНрд╕ рд╕реНрд╡рд╛рд░реНрдореНрд╕ рдФрд░ рдореЗрд╕реЛрд╕ / рдореИрд░рд╛рдерди рдХреНрд▓рд╕реНрдЯрд░ред рдпрд╣ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ 'рдСрдирд░рди' рдХреА рдХрдореА рдХреЗ рдЖрд╕рдкрд╛рд╕ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдЬрд┐рд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдмрджрд╕реВрд░рдд рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рджреЗрд╡ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдХреЗ рдЙрдардиреЗ рдФрд░ рдЪрд▓рдиреЗ рдХреЗ рдмрд╛рдж рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдФрд░ at
рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдЕрдм рдореЗрд░рд╛ рдХрдВрдЯреЗрдирд░ PID 1 рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╕рднреА рд╕рдВрдХреЗрддреЛрдВ рдХрд╛ рдареАрдХ рд╕реЗ рдЬрд╡рд╛рдм рджреЗ рд░рд╣рд╛ рд╣реИред
рд╣рдореЗрдВ рдЕрднреА рднреА рдЗрд╕рдХреА рдЬрд░реВрд░рдд рд╣реИред рдореБрдЭреЗ рдРрд╕рд╛ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ, рдХрд┐ рдХреИрд╕реЗ рдореИрдВ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд░реЛрд▓рдЕрдк рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ рдХреЗ рдЭреБрдВрдб рдореЗрдВ рдмрдирд╛рдП рдмрд┐рдирд╛ рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
@ рд╡рд┐рдЬреЗрддрд╛-рдкреЗрд░реЛрд╡ рд░реЛрд▓-рдЕрдк рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ
рдбреЗрдЯрд╛рдмреЗрд╕ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд╕реЗрд╡рд╛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рд╕реНрдирд┐рдкреЗрдЯ рдпрд╣рд╛рдБ рджрд┐рдП рдЧрдП рд╣реИрдВред
x-task: &task
# run once deploy policy for tasks
deploy:
restart_policy:
condition: none
replicas: 1
service:
automata-auth-migrate:
<<: *automata-auth
<<: *task
# without the sleep it can't lookup the host postgres. maybe the command is ran before the network set is complete.
command: sleep 5 && python /code/manage.py migrate --noinput
рдЦреИрд░, рдпрд╣ рдЪреМрдерд╛ рд╡рд░реНрд╖ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рд╣реБрдИ рд╣реИред рддреЛ рдореБрдЭреЗ onrun
рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдкрдирд╛ +1 рдЬреЛрдбрд╝рдиреЗ рджреЗрдВред рдкреБрдирд╢реНрдЪ: рдореБрдЭреЗ рдкреВрд░реЗ рдзрд╛рдЧреЗ рдХреЗ рд▓рд┐рдП рдкреЙрдкрдХреЙрд░реНрди рдЦрд░реАрджрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред
рдореИрдВ рднреА onrun
рдпрд╛ рд╕рдорддреБрд▓реНрдп (рдкреЛрд╕реНрдЯ-рд░рди?) рдПрдХ рд╕реЛрдЪреВрдВрдЧрд╛ред рдПрдХ рдЖрд╡рд░рдг рд▓рд┐рдкрд┐ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдбреЙрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╕рд┐рд░реНрдл ... рдмрджрд╕реВрд░рдд рд╣реИред
IMO docker рдХрдВрдкреЛрдЬрд╝ рдиреЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рдХрдВрдЯреЗрдирд░ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди MVP рдерд╛ рдХрд┐ рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо, рд╕рдореБрджрд╛рдп, рдЗрд╕реЗ "рд░рдЦрд░рдЦрд╛рд╡ рдореЛрдб" рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдЙрддреНрдкрд╛рджрди-рддреИрдпрд╛рд░ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рд╕рдорд╛рдзрд╛рди (рдпрд╛рдиреА рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕) рдХрд╛ рдкреНрд░рд╕рд╛рд░ рд╣реБрдЖ рд╣реИред рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдВрдЯреЗрдирд░ рдирд┐рд░реНрднрд░рддрд╛ рдЬреИрд╕реА рдЙрдиреНрдирдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ, рддреЛ "рдХрдВрдЯреЗрдирд░ рдХреЗ рдКрдкрд░ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕ рдмрд╛рдд рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ" рдЬреИрд╕реА рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд, рдпрд╣ рдХрдерд╛ рдХреЛ рдлрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдХрд╛рд╕ рдХреА рдЧрддрд┐ рдореЗрдВ рдХреЗрд╡рд▓ рдЧрд┐рд░рд╛рд╡рдЯ рдЖрдИ рд╣реИред рдмрд╣реБрдд рдХрдо рд╕реЗ рдХрдо, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ _should be_ рдХреЛ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдк Dockerfile рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП mysql
рдХрдВрдЯреЗрдирд░ рд▓реЗрдВ рдФрд░ рдХрд┐рд╕реА рдШрдЯрдирд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ API рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдЖрдк рдЗрд╕реЗ рдпрд╛ рддреЛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
Dockerfile
рдХреЛ рдмрджрд▓рдирд╛ рдФрд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╕реЗ рдкрд╣рд▓реЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЕрдкрдиреА рдЦреБрдж рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝рдирд╛ред рдЖрдк рдПрдХ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ CMD
рдореЗрдВ Dockerfile
, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реНрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ ENTRYPOINT
редdocker cp
, docker exec
] рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВредрдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП onrun
рдЬреИрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдлрд╛рдпрджреЗрдордВрдж рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдбрдВрдк, рдпрд╣ рдХреНрдпреЛрдВ рдмрдВрдж рд╣реИ? рд╕реНрдерд┐рддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬрдм рдЖрдк рдХреИрд╕реЗрдВрдбреНрд░рд╛ рдХреА рддрд░рд╣ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реНрдХреАрдорд╛ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ... рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ... рдЙрд╣, рдпрд╣ рдмрджрд╕реВрд░рдд рд╣реИ
@somebi рдХреЛ рд▓рдЧрд╛ рдЬреИрд╕реЗ
рдмрд╕ рдореЗрд░реЗ рджреЛ рд╕реЗрдВрдЯ: рдореИрдВ рдпрд╣рд╛рдВ рдЗрд╕рд▓рд┐рдП рдЙрддрд░рд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд▓реВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрдм рднреА рдореИрдВ рдХрдВрдЯреЗрдирд░ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реВрдВ (рдПрд╕рдПрд╕рдПрд▓ рдбреЙрдХрд░ рд╣рдм wordpress
рдЫрд╡рд┐ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ)ред рджреБрдирд┐рдпрд╛ рдХрд╛ рдЕрдВрдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рднреА рдпрд╣ рдКрдкрд░ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдПрдХ рдЬреЛрдбрд╝реА рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ рддрд╛рдХрд┐ рдореИрдВ рдмрд╕ рдмрд┐рдирд╛ рдбрдВрдк рдХрд┐рдП рдХрдВрдЯреЗрдирд░ рдХреЛ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рд▓реЗ рдЬрд╛ рд╕рдХреВрдВред
рдмрд╕ рдореЗрд░реЗ рджреЛ рд╕реЗрдВрдЯ: рдореИрдВ рдпрд╣рд╛рдВ рдЗрд╕рд▓рд┐рдП рдЙрддрд░рд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд▓реВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрдм рднреА рдореИрдВ рдХрдВрдЯреЗрдирд░ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реВрдВ (рдПрд╕рдПрд╕рдПрд▓ рдбреЙрдХрд░ рд╣рдм
wordpress
рдЫрд╡рд┐ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ)ред рджреБрдирд┐рдпрд╛ рдХрд╛ рдЕрдВрдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рднреА рдпрд╣ рдКрдкрд░ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдПрдХ рдЬреЛрдбрд╝реА рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ рддрд╛рдХрд┐ рдореИрдВ рдмрд╕ рдмрд┐рдирд╛ рдбрдВрдк рдХрд┐рдП рдХрдВрдЯреЗрдирд░ рдХреЛ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рд▓реЗ рдЬрд╛ рд╕рдХреВрдВред
рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдЫрд╡рд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдирдИ рдЫрд╡рд┐ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдХреНрд╖рдо рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рддреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ dockerfile рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
FROM wordpress:php7.1
RUN a2enmod ssl
рдПрдХ рдФрд░ рдЙрдкрд╛рдп рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЙрд╕рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдПрдХреНрдЯрд┐рд╡реЗрд╢рди рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред рдлрд┐рд░ рдбреЙрдХ рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдПрдХ рдирдИ рдЫрд╡рд┐ рдмрдирд╛рдПрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣ php 7.1 рдХреЗ рд╕рд╛рде рд╡рд░реНрдбрдкреНрд░реЗрд╕ 5.2 рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░реАрдлрд╛рдЗрд▓ рд╣реИ:
рд╡рд░реНрдбрдкреНрд░реЗрд╕ dockerfile
рдЖрдк рд▓рд╛рдЗрди 63 рдореЗрдВ рдЕрдзрд┐рдХ рдореЙрдбреНрдпреВрд▓ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ ssl genaration рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рд╕рдм рдорд╛рдорд▓рд╛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ рдХрдВрдЯреЗрдирд░ рдЬреАрд╡рди рдЪрдХреНрд░ рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд╣реБрдХ рдмрдирд╛ рд░рд╣реА рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдХрдм рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЖрджрд┐ред
рдпрд╣ рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЬреЛрдбрд╝ рд╣реЛрдЧрд╛!
рдЗрд╕ рдереНрд░реЗрдб рдкрд░ рдЙрддреНрддрд░ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдРрд╕реЗ рдХрд╛рд░рдг рд╣реИрдВ рдХрд┐ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ "рд╕рд╛рд░рд╛" рдкреИрд╕рд╛ рд░рдЦ рд░рд╣реЗ рд╣реИрдВ (рдбреЙрдХрд░) рдЙрддреНрдкрд╛рджрди рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрд╣ рдмреБрд░реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреЛрдИ рдЬрд▓реНрдж рд╣реА рдбреЙрдХрд░ (рдХрдВрдкрдиреА) рдХреЛ рдЦрд░реАрдж рд▓реЗрдЧрд╛ рдФрд░ рд╕рдореБрджрд╛рдп рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ред / рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ ...
рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рдЙрддреНрддрд░ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░рдг рд╣реИрдВ рдХрд┐ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ _ "рд╕рднреА" _ рдореЛрдиреА рдбреЛрдХрд░ (рддрдХрдиреАрдХ) рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдХреЛрдИ рдмреБрд░реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреЛрдИ рдЬрд▓реНрдж рд╣реА рдбреЙрдХрд░ (рдХрдВрдкрдиреА) рдХреЛ рдЦрд░реАрдж рд▓реЗрдЧрд╛ рдФрд░ рд░рд╛рд╕реНрддреЗ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ / рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ред рд╕реНрд╡рд╛рдЧрдд рд╣реИ / рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ ...
рдореИрдВрдиреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЖрдкрддреНрддрд┐рдЬрдирдХ рдмрдпрд╛рди рдХреЗ рдПрдХ рд╕рдорд╛рди рдЖрд▓реЛрдЪрдХ рд▓рд┐рдЦрд╛, (рдпрд╣ _open рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рддрд░реНрдЬ рдкрд░ рдерд╛, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдирд╣реАрдВ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдЕрдиреБрд░рдХреНрд╖рдХ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рддрд░реНрдХ рдХреЗ рдмрд┐рдирд╛ рддрд░реНрдХ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдХрд┐рддрдирд╛ рддрдХрдиреАрдХреА рдЖрд░реНрдЧрди рд╣реИ_), рдЗрд╕рдХрд╛ рдмрд╣реБрдд рд╕рдорд░реНрдерди рд╣реИ , рдФрд░ рд╕рдВрджреЗрд╢ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдкреАрдЫреЗ рдХрд┐рд╕ рддрд░рд╣ рдХреЗ рдЕрднрд┐рдорд╛рдиреА рд╡реНрдпрдХреНрддрд┐ рд╣реИрдВред
рдЬрдм рдЖрдкрдХрд╛ рд╕рдореБрджрд╛рдп 4 рд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдорд╛рдВрдЧрддрд╛ рд╣реИ рдФрд░ рдЖрдк (рдбреЛрдХрд░) рдЕрдкрдиреА рдЖрдБрдЦреЗрдВ рдмрдВрдж рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЙрд╕реА рджрд┐рд╢рд╛ рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ:
рдФрд░ рдЕрдм рдбреЙрдХрдЯрд░ рдиреЗ рдмреЗрдЪ рджрд┐рдпрд╛ рдФрд░ рдмреЗрдЪ рджрд┐рдпрд╛ред
рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕реБрди рдирд╣реАрдВ рд╕рдХрддреЗ рдереЗ ... рд╡реЗ рд╣рд╛рд░ рдЧрдПред
рд╢рд░реНрдо - рд▓реЗрдХрд┐рди рд╣реЗ рд╣реЛред
рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХреБрдЫ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ onFailure
рд╣реБрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрдпрд╛рд░ рдХрд░рддрд╛ рдерд╛, рдЬреЛ рддрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреА рдЬрд╛рдБрдЪ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдЕрд░реНрдерд╛рдд
services:
app:
image: myapp:latest
hooks:
onFailure:
- # Call a monitoring service (from the host machine) to tell it that the service is offline.
рдпрд╣ рдРрд╕реЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЙрдХреЗрдЯ / рдкреЛрд░реНрдЯ рд╕реЗ рдирд╣реАрдВ рдЬреБрдбрд╝рд╛ рд╣реЛред рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╢рд╛рдпрдж рдпрд╣рд╛рдБ рдЬрд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдБрдЪрд╛ рд╣реИ рдФрд░ рдмрд╣реБрдд рдЫреЛрдЯреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдУрд╡рд░рдХрд┐рд▓ рд╣реИред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░ рдХреЗ рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рдХреЛ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ "рд░реИрдк" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ред рдЕрд░реНрдерд╛рдд
# /app/bin/run_with_monitor
#!/bin/bash
set -eE
updateMonitoringSystem() {
# do something here... This is run from the container, though, unfortunately.
if [[ $? -eq 1 ]]; then
# Failed!
else
# All is good!
fi
}
trap 'updateMonitoringSystem' EXIT
$@
# Dockerfile
....
CMD ["/app/bin/run_with_monitor", "./my-app"
рдлрд┐рд░ рднреА, рдЫрд╡рд┐ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ _without_ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
: man_shrugging: рдЗрд╕ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдЖрдпрд╛, рдХрд┐ рдкреНрд░рддрд┐рдпреЛрдЧреА (рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕) рдХреЗ рдкрд╛рд╕ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдореБрдЭреЗ рдПрдХ рдбрдВрдкрд╕реНрдЯрд░ рдЖрдЧ рдорд┐рд▓реАред
рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИ, рдЕрдм рдореБрдЭреЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЙрдХрд░реЛрдВ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рд╣реИред
рдирдпрд╛ рд╕рд╛рд▓ рдореБрдмрд╛рд░рдХ рд╣реЛ: roll_eyes:
@LukeStonehm рд╡рд╣реАред рдХрдВрдЯреЗрдирд░ рдЦрдбрд╝реЗ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╡рди рдХрдорд╛рдВрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЧрд░реНрдо рдХрдЪрд░реЗ рдХреЗ рд╕рд╛рде рдЗрд▓рд╛рдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреА рдЦреБрдж рдХреА рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рдбреЙрдХ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ рдЬрдм рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЫрд╡рд┐ рдореБрдЭреЗ 90% рдпрд╛ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рддрд░реАрдХреЗ рд╕реЗ рдорд┐рд▓рддреА рд╣реИред
рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░рд╛рд╢рд┐ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдореМрдЬреВрдж рдХреБрдЫ рд╕реЗрд╡рд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ MySQL рдпрд╛ MongoDB рдбреЗрдЯрд╛рдмреЗрд╕ред
рдЗрд╕рд▓рд┐рдП рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ docker-compose
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕рдордЭрджрд╛рд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдЕрдкреЗрдХреНрд╖рд╛ рдХреА рдЬрд╛рддреА рд╣реИ:
Dockerfiles
(рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ) рд▓рд┐рдЦрдирд╛ рд╕реАрдЦреЗрдВDocker images
рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╕реАрдЦреЗрдВDockerfiles
рдмрдирд╛рдПрдВ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЬреЛрдбрд╝рддреЗ рд╣реБрдП рдХрд┐ рдХрдВрдЯреЗрдирд░ рдПрдХ рджреВрд╕рд░реЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВDockerfiles
рдХреЛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВDockerfiles
рд╕реЗ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ Docker images
рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдФрд░ рдпрд╣ рдмреЗрдХрд╛рд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐:
Docker images
рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ / рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ (рдЦреАрдВрдЪрдиреЗ / рдзрдХреНрдХрд╛ рджреЗрдиреЗ) рдкрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░ рд░рд╣реЗ рд╣реИрдВредDockerfiles
рд▓рд┐рдЦрдиреЗ рдкрд░ рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдЙрдирдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рдЙрдирдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ ... рдЖрджрд┐редDocker images
рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЦреЛ рджреЗрддреЗ рд╣реИрдВрдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреА рдЬрд╛рдБрдЪ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рд╕рдм рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рд╣рдо рдЬрдм рдЪрд╛рд╣реЗрдВ image: mysql:8.0.18
рд╕реЗ image: mysql:8.0.19
рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ!
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ:
Dockerfiles
рдкрд░рд┐рд╡рд░реНрддрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡реЗ docker-compose
рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдФрд░ рдЖрдк рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ рдХрд┐ docker-compose
рдХреЗрд╡рд▓ "рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП" рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдм рдХреБрдЫ рдХрд░рддрд╛ рд╣реИред depends_on
рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реБрдП, рдФрд░ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЦреАрдВрдЪрдирд╛ рдФрд░ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдирд╣реАрдВ рд╣реИ рдпрд╣ рд╕рд┐рд░реНрдл docker
рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред
@ binman-рдбреЛрдХрд░ @crosbymichael @dmcgowan @ebriney @ehazlett @eunomie @guillaumerose @jeanlaurent @justincormack @lorenrh @manishtomar @olegburov @routelastresort @spencerhcheng @StefanScherer @thaJeztah @tonistiigi @ulyssessouza @aiordache @ рдХреНрд░рд┐рд╕-рдмреБрдврд╝реАрдпрд╛ @ndeloof
рдХреГрдкрдпрд╛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдЪрд┐рдд рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВред
task service
рддрдХрдиреАрдХ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕ рдореЛрдбрд╝ рдкрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рдЖрдЗрдбрд┐рдУрд╕рд┐рдВрдХрд░реЗрдХреНрдЯрд┐рд╕ рд╣реИред рд╣рдордиреЗ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓реНрд╕ рдореЗрдВ рдкреИрдЯрд░реНрди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рдмреЗрд╣рддрд░ 'depend_on' рд╕рд╣рдордд рд╣реВрдВ рдЬреЛ рдПрдХ рд╕рдлрд▓ рд╣реЗрд▓реНрдердЪреЗрдХ рдпрд╛ рд╕рдлрд▓ рдирд┐рдХрд╛рд╕ / рдХрд╛рд░реНрдп рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдХрдИ рдХрд╛рд░реНрдп рдЖрд╕рд╛рди рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рд╣рд╛рдпрдХ рдЬреЛрдбрд╝ рд╣реЛрдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬреЛрд░ рджреЗрдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдХрд┐ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рдкрд╛рд╕ рдЬреАрд╡рди рдЪрдХреНрд░ рдкреЛрд╕реНрдЯрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИред
k8s! = docker-composeред рдЧрд▓рдд рдЪреИрдирд▓
рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА рдмрд╛рдд рдереА: рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдФрд░ рдбреЛрдХрд░ рдХрдВрдкреЛрдЬ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрдИ рдорд╛рдорд▓реЗ / рдЙрджреНрджреЗрд╢реНрдп рд╣реИрдВ, рдЬреЛ рдЗрд╕реЗ рдХрдВрдкреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реНрдХ рд╣реЛрдЧрд╛ред рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдпрджрд┐ рдореИрдВ рдЕрд╕реНрдкрд╖реНрдЯ рдерд╛ред
рдЦреБрд╢рдЦрдмрд░реА!!
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЙрдХрдЯрд░ рдиреЗ рд╣рдореЗрдВ рд╕реБрдирд╛ рд╣реИ, (рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдкрд░)ред https://www.docker.com/blog/announcing-the-compose-specification/
рдЖрдЗрдП рд╕рдореБрджрд╛рдп рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╣рд╛рдВ рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред рд╣рдо рдЗрд╕ рдкреБрдирд░рд╛рд░рдВрдн рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдПрдХ рдЦреБрд▓рд╛ рдФрд░ рдореИрддреНрд░реАрдкреВрд░реНрдг рд╕рдореБрджрд╛рдп рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЦреБрд╢рдЦрдмрд░реА!!
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЙрдХрдЯрд░ рдиреЗ рд╣рдореЗрдВ рд╕реБрдирд╛ рд╣реИ, (рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдкрд░)ред https://www.docker.com/blog/announcing-the-compose-specification/
рдЖрдЗрдП рд╕рдореБрджрд╛рдп рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╣рд╛рдВ рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред рд╣рдо рдЗрд╕ рдкреБрдирд░рд╛рд░рдВрдн рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдПрдХ рдЦреБрд▓рд╛ рдФрд░ рдореИрддреНрд░реАрдкреВрд░реНрдг рд╕рдореБрджрд╛рдп рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ? рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдЕрднреА рддрдХ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд▓реА рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рдпрд╣рд╛рдБ рд╣реИ: https://github.com/compose-spec/compose-pec
рдореБрдЭреЗ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рджрд┐рдЦрддреА рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╣реА рдЬрдЧрд╣ рд╣реИ ...
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВрдиреЗ https://github.com/compose-spec/compose-spec/issues/84 рдкрд░ рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓рд╛
рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП HEALTHCHECK рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
Dockerfile
FROM ubuntu
COPY healthcheck.sh /healthcheck.sh
RUN chmod a+x /healthcheck.sh
HEALTHCHECK --interval=5s CMD /healthcheck.sh
CMD bash -c 'set -x; set +e; while true; do cat /test.txt; sleep 3; done'
healthcheck.sh
#/usr/bin/env bash
set -e
FIRST_READY_STATUS_FLAG='/tmp/.FIRST_READY_STATUS_FLAG'
# Health check
echo 'Run command to validate the container status HERE'
# On success
if [ ! -f "${FIRST_READY_STATUS_FLAG}" ]; then
# On first success...
touch "${FIRST_READY_STATUS_FLAG}"
# Run ON_RUN on first health check ok
if [ ! -z "${DOCKER_ON_RUN}" ]; then
eval "${DOCKER_ON_RUN}"
fi
fi
1
рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИредDOCKER_ON_RUN
рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВредdocker-compose.yml
version: "3.7"
services:
test:
build:
context: .
image: test/on-run
environment:
DOCKER_ON_RUN: echo x >> /test.txt
рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рдХрдорд╛рдВрдб рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк DOCKER_ON_RUN
рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
docker-compose build
docker-compose up
рдЖрдЙрдЯрдкреБрдЯ:
Creating network "tmp_default" with the default driver
Creating tmp_test_1 ... done
Attaching to tmp_test_1
test_1 | + set +e
test_1 | + true
test_1 | + cat /test.txt
test_1 | cat: /test.txt: No such file or directory
test_1 | + sleep 3
test_1 | + true
test_1 | + cat /test.txt
test_1 | cat: /test.txt: No such file or directory
test_1 | + sleep 3
test_1 | + true
test_1 | + cat /test.txt
test_1 | x
test_1 | + sleep 3
test_1 | + true
test_1 | + cat /test.txt
test_1 | x
test_1 | + sleep 3
test_1 | + true
test_1 | + cat /test.txt
test_1 | x
test_1 | + sleep 3
cat: /test.txt: No such file or directory
рддреНрд░реБрдЯрд┐ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред/test.txt
рдЕрдВрджрд░ рдХреЗрд╡рд▓ рдПрдХ x
рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВредрдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХреЛ _health check_ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдмрд╛рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
@ reduardo7
рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдмрд╕ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдкрдХреА рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рд░реНрдорд╛рдг рдпрд╛ рдЖрджрд┐ рдХреЗ рд▓рд┐рдП, рддреЛ рдЖрдк touch "${FIRST_READY_STATUS_FLAG}"
рд▓рд┐рдП рд╡реЙрд▓реНрдпреВрдо рдорд╛рдЙрдВрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрдИ рд╕рдорд╛рдзрд╛рди рд╡реИрдз рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рд╕реЗ рдпрд╣ рднреА рд╣рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
ENTRYPOINT ["./entrypoint.sh"]
рдЬрд┐рд╕рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реЗрд╡рд╛ рдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рддрд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ред
рдпрд╣ рдЕрднреА рднреА рдПрдХ рд╣реБрдХ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдЬреАрд╡рди рдЪрдХреНрд░ рдореЗрдВ рддрд░реНрдХ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛:
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рд╕рд╛рд░реНрдердХ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЪрд┐рддреНрд░ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╛рдд рд╣реИред
рдЗрд╕реЗ docker-compose
рдореЗрдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рднреА рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
lifecycle:
before_start: "./beforeStartHook.sh"
after_destroy: "./afterDestroyHook.sh"
рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬреИрд╕реЗ:
hooks:
before_destroy: "./beforeDestroyHook.sh"
before_create: "./fixFsRights.sh"
рд╣рдо рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣реБрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реВрдЯ рдЕрдиреБрдорддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдХрдВрдЯреЗрдирд░ рдХреЛ рдЧреИрд░ рд░реВрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
рд╡рд╛рд╣, рдРрд╕реА рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдФрд░ рдЕрднреА рднреА рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЗрд╕рд▓рд┐рдП, рдореЗрд░реЗ рдбреЙрдХрдЯрд░ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдореБрдЭреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдореЗрдХрдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдВрдЧреЗред рддреЛ рдХрдореНрдкреЛрдЬ рдХреНрдпреЛрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛
? рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░, рд╕реНрдХреЗрд▓ рдЖрджрд┐ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ || рдХрд╛рдордЪреЛрд░
рдареАрдХ рд╣реИ, рдореИрдВ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓реЗрддрд╛ рд╣реВрдВ, рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рд╕реАрдЖрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред
рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдордирдЧреЛрдбрдм рдХрд╛ рдкреНрд░рд╛рд╡рдзрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЦрд░рдЧреЛрд╢реЛрдВ рдореЗрдВ рдХрддрд╛рд░ рдФрд░ рдЦрд╛рддреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
рдЖрдЬ рдореИрдВ рдЬреЛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ:
onrun
рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рдореИрдВ рд╕реАрдзреЗdocker-compose -f appmaster.yml -p appmaster up -d
рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВрдФрд░ yml рдлрд╝рд╛рдЗрд▓ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реЛ рдЬрд╛рддреА рд╣реИ