рдкрд╛рдареНрдпрдХреНрд░рдордХреЛ рд╕реБрд░реБрд╡рд╛рддрдХреЛ рдкреНрд░рддреНрдпрд╛рд╢рд╛рдорд╛ рддрдпрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдкреЛрдбрдХрд╛рд╕реНрдЯ рдЯреНрд░рд╛рдиреНрд╕рдХреНрд░рд┐рдкреНрд╢рдирдХреЛ рдЕрдиреБрд╡рд╛рдж
рдбрдХрд░ рдХрдореНрдкреЛрдЬ рдХрд╛рд░реНрдп рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рдЕрджреНрднреБрдд рдЙрдкрдХрд░рдг рд╣реЛ
рддрдкрд╛рдИрдВрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рд╕реНрдЯреНрдпрд╛рдХрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд╛рддрд╛рд╡рд░рдгред рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ
рддрдкрд╛рдИрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрдорд╛ рд╕реНрдкрд╖реНрдЯ рд░ рд╕рд░рд▓ рд╕рд┐рдиреНрдЯреНрдпрд╛рдХреНрд╕ рдкрдЫреНрдпрд╛рдЙрдБрджреИ
рдлрд╛рдЗрд▓рд╣рд░реВ
рдХреЛ рдЖрдЧрдорди рд╕рдВрдЧреИ
рдХреНрд▓рд╕реНрдЯрд░
рддрд░ рдХреЗ рдпрд╕рдХреЛ рдорддрд▓рдм рддрдкрд╛рдИрд▓реЗ рдЙрд╣реА рдбрдХрд░-рдХрдореНрдкреЛрдЬ рдлрд╛рдЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ
рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛? рд╡рд╛ рдЙрд╣реА рдлрд╛рдЗрд▓ рдХреЛ рд▓рд╛рдЧреА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН
рдордЮреНрдЪрди? рдареАрдХ рдЫ, рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рд╣реЛ, рддрд░ рдпрд╕ рдкреНрд░рдХрд╛рд░реНрдпрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореАрд▓рд╛рдИ рдирд┐рдореНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:
- рдЪрд░ рдЗрдиреНрдЯрд░рдкреЛрд▓реЗрд╕рди: рдХреЗрд╣рд┐рдХреЛ рд▓рд╛рдЧрд┐ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ
рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рд╡реЗрд╢рдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреЗ рдорд╛рдирд╣рд░реВред - рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдУрднрд░рд░рд╛рдЗрдб: рд╕реЗрдХреЗрдиреНрдб рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ (рд╡рд╛ рдХреБрдиреИ рдкрдирд┐
рдЕрд░реНрдХреЛ рдЕрд░реНрдХреЛ) рдбрдХрд░-рдХрдореНрдкреЛрдЬ рдлрд╛рдЗрд▓ рдЬреБрди рд╕рдореНрдмрдиреНрдзрдорд╛ рдХреЗрд╣рд┐ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреЗрдЫ
рдкрд╣рд┐рд▓реЛ, рд░ рдбрдХрд░ рдХрдореНрдкреЛрдЬрд▓реЗ рджреБрдмреИ рдлрд╛рдЗрд▓рд╣рд░реВ рдорд░реНрдЬ рдЧрд░реНрдиреЗ рдЦреНрдпрд╛рд▓ рд░рд╛рдЦреНрдиреЗрдЫред
рд╡рд┐рдХрд╛рд╕ рд░ рдЙрддреНрдкрд╛рджрди рдлрд╛рдЗрд▓рд╣рд░реВ рдмреАрдЪрдХреЛ рднрд┐рдиреНрдирддрд╛
рд╡рд┐рдХрд╛рд╕рдХреЛ рдХреНрд░рдордорд╛, рддрдкрд╛рдЗрдБ рдкреНрд░рд╛рдпрдГ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдЬрд╛рдБрдЪ рдЧрд░реНрди рдЪрд╛рд╣рд╛рдиреБрд╣реБрдиреНрдЫ
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордпред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рд╕реНрд░реЛрдд рдХреЛрдбрдХреЛ рд╕рд╛рде рднреЛрд▓реНрдпреБрдо рдорд╛рдЙрдиреНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ
рдХрдиреНрдЯреЗрдирд░ рдЬрд╕рд▓реЗ рддрдкрд╛рдЗрдБрдХреЛ рдЖрд╡реЗрджрдирдХреЛ рд▓рд╛рдЧрд┐ рд░рдирдЯрд╛рдЗрдо рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред рддрд░ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдгрдХреЛ рд▓рд╛рдЧрд┐
рдпреЛ рд╡рд┐рдзрд┐ рдЙрдкрдпреБрдХреНрдд рдЫреИрдиред
рдЙрддреНрдкрд╛рджрдирдорд╛, рддрдкрд╛рдИрдВрд╕рдБрдЧ рдзреЗрд░реИ рдиреЛрдбрд╣рд░реВ рднрдПрдХреЛ рдХреНрд▓рд╕реНрдЯрд░ рдЫ, рд░ рднреЛрд▓реНрдпреБрдо рд╕реНрдерд╛рдиреАрдп рдЫ
рддрдкрд╛рдИрдВрдХреЛ рдХрдиреНрдЯреЗрдирд░ (рд╡рд╛ рд╕реЗрд╡рд╛) рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдиреЛрдбрд╕рдБрдЧ рд╕рд╛рдкреЗрдХреНрд╖, рддреНрдпрд╕реИрд▓реЗ рддрдкрд╛рдИрдВрд▓реЗ рдЧрд░реНрдиреБрд╣реБрдиреНрди
рддрдкрд╛рдЗрдБ рдЬрдЯрд┐рд▓ рдЕрдкрд░реЗрд╢рди рдмрд┐рдирд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдорд╛рдЙрдиреНрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдЬреБрди рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ
рдХреЛрдб рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬреЗрд╕рди, рд╕рдВрдХреЗрддрд╣рд░реВ, рдЖрджрд┐ред
рдпрд╕рдХреЛ рд╕рдЯреНрдЯрд╛, рд╣рд╛рдореА рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рддрдкрд╛рдИрдВрдХреЛ рдХреЛрдбрдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рдВрд╕реНрдХрд░рдгрдХреЛ рд╕рд╛рде рдЫрд╡рд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВред
рдпрд╕рд▓рд╛рдИ рдЙрдкрдпреБрдХреНрдд рдЯреНрдпрд╛рдЧрд▓реЗ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЙрдиреЗ рдЪрд▓рди рдЫ (рддрдкрд╛рдИрд▓реЗ рд╕рд┐рдорд╛рдиреНрдЯрд┐рдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ
рд╕рдВрд╕реНрдХрд░рдг рд╡рд╛ рддрдкрд╛рдИрдВрдХреЛ рд╡рд┐рд╡реЗрдХрдорд╛ рдЕрд░реНрдХреЛ рдкреНрд░рдгрд╛рд▓реА)ред
рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдУрднрд░рд░рд╛рдЗрдб
рднрд┐рдиреНрдирддрд╛рд╣рд░реВ рджрд┐рдИрдПрдХреЛ рдЫ рд░ рддрдкрд╛рдИрдВрдХреЛ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рдкрд░рд┐рджреГрд╢реНрдпрд╣рд░реВрдорд╛ рдлрд░рдХ рд╣реБрди рд╕рдХреНрдЫ
рд╡рд┐рдХрд╛рд╕ рд░ рдЙрддреНрдкрд╛рджрди, рдпреЛ рд╕реНрдкрд╖реНрдЯ рдЫ рдХрд┐ рд╣рд╛рдореАрд▓рд╛рдИ рд╡рд┐рднрд┐рдиреНрди рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓рд╣рд░реВ рдЪрд╛рд╣рд┐рдиреНрдЫред
рдбрдХрд░ рдХрдореНрдкреЛрдЬрд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдХрдореНрдкреЛрдЬ рдлрд╛рдЗрд▓рд╣рд░реВрд▓рд╛рдИ рдорд░реНрдЬ рдЧрд░реНрди рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ
рдЕрдиреНрддрд┐рдо рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпреЛ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрджрдЫ рдЙрджрд╛рд╣рд░рдгрдорд╛ рджреЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫ:
$ cat docker-compose.yml
version: "3.2"
services:
whale:
image: docker/whalesay
command: ["cowsay", "hello!"]
$ docker-compose up
Creating network "composeconfigs_default" with the default driver
Starting composeconfigs_whale_1
Attaching to composeconfigs_whale_1
whale_1 | ________
whale_1 | < hello! >
whale_1 | --------
whale_1 |
whale_1 |
whale_1 |
whale_1 | ## .
whale_1 | ## ## ## ==
whale_1 | ## ## ## ## ===
whale_1 | /""""""""""""""""___/ ===
whale_1 | ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
whale_1 | ______ o __/
whale_1 | __/
whale_1 | __________/
composeconfigs_whale_1 exited with code 0
рднрдирд┐рдП рдЕрдиреБрд╕рд╛рд░, рдбрдХрд░ рдХрдореНрдкреЛрдЬрд▓реЗ рдмрд╣реБ рд░рдЪрдирд╛рд╣рд░реВ рд╕рдВрдпреЛрдЬрди рдЧрд░реНрди рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ -
рдлрд╛рдЗрд▓рд╣рд░реВ, рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рджреЛрд╕реНрд░реЛ рдлрд╛рдЗрд▓рдорд╛ рд╡рд┐рднрд┐рдиреНрди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдУрднрд░рд░рд╛рдЗрдб рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐:
$ cat docker-compose.second.yml
version: "3.2"
services:
whale:
command: ["cowsay", "bye!"]
$ docker-compose -f docker-compose.yml -f docker-compose.second.yml up
Creating composeconfigs_whale_1
Attaching to composeconfigs_whale_1
whale_1 | ______
whale_1 | < bye! >
whale_1 | ------
whale_1 |
whale_1 |
whale_1 |
whale_1 | ## .
whale_1 | ## ## ## ==
whale_1 | ## ## ## ## ===
whale_1 | /""""""""""""""""___/ ===
whale_1 | ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
whale_1 | ______ o __/
whale_1 | __/
whale_1 | __________/
composeconfigs_whale_1 exited with code 0
рдпреЛ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕рдордпрдорд╛ рдзреЗрд░реИ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫреИрди, рдЬрдм рдЖрджреЗрд╢
рдзреЗрд░реИ рдкрдЯрдХ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреЗрдЫред
рд╕реМрднрд╛рдЧреНрдп рджреЗрдЦрд┐, рдбрдХрд░ рд░рдЪрдирд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлрд╛рдЗрд▓ рднрдирд┐рдиреНрдЫ рдЦреЛрдЬреНрдЫ
docker-compose.override.yml рдорд╛рдирд╣рд░реВ рдУрднрд░рд░рд╛рдЗрдб рдЧрд░реНрди docker-compose.ymlред рдпрджрд┐
рджреЛрд╕реНрд░реЛ рдлрд╛рдЗрд▓ рдкреБрди: рдирд╛рдорд╛рдХрд░рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН, рддрдкрд╛рдИрд▓реЗ рдЙрд╣реА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ, рдХреЗрд╡рд▓ рдореВрд▓ рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░:
$ mv docker-compose.second.yml docker-compose.override.yml
$ docker-compose up
Starting composeconfigs_whale_1
Attaching to composeconfigs_whale_1
whale_1 | ______
whale_1 | < bye! >
whale_1 | ------
whale_1 |
whale_1 |
whale_1 |
whale_1 | ## .
whale_1 | ## ## ## ==
whale_1 | ## ## ## ## ===
whale_1 | /""""""""""""""""___/ ===
whale_1 | ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
whale_1 | ______ o __/
whale_1 | __/
whale_1 | __________/
composeconfigs_whale_1 exited with code 0
рдареАрдХ рдЫ, рдпреЛ рд╕рдореНрдЭрди рд╕рдЬрд┐рд▓реЛ рдЫред
рдЪрд░ рдХреЛ рдЗрдиреНрдЯрд░рдкреЛрд▓реЗрд╕рди
рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓ рд╕рдорд░реНрдерди
рдЪрд░
services:
my-service:
build:
context: .
image: private.registry.mine/my-stack/my-service:${MY_SERVICE_VERSION:-latest}
...
рд░ рдпрджрд┐ рддрдкрд╛рдЗрдБ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ рдбрдХрд░-рдХрдореНрдкреЛрдЬ рдирд┐рд░реНрдорд╛рдг (рд╡рд╛ рдзрдХреНрдХрд╛) рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдмрд┐рдирд╛
$MY_SERVICE_VERSION, рдорд╛рди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗрдЫ рдирд╡реАрдирддрдорддрд░ рдпрджрд┐ рддрдкрд╛рдЗрдБ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ
рдирд┐рд░реНрдорд╛рдг рдЕрдШрд┐ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рдорд╛рди, рдпреЛ рдирд┐рд░реНрдорд╛рдг рд╡рд╛ рдзрдХреЗрд▓реНрджрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗрдЫ
рджрд░реНрддрд╛ рдЧрд░реНрди private.registry.mine.
рдореЗрд░рд╛ рд╕рд┐рджреНрдзрд╛рдиреНрддрд╣рд░реВ
рдореЗрд░реЛ рд▓рд╛рдЧрд┐ рдХрд╛рдо рдЧрд░реНрдиреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдгрд╣рд░реВ рддрдкрд╛рдИрдВрдХреЛ рд▓рд╛рдЧрд┐ рдкрдирд┐ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдЫред рдо рдпреА рдкрд╛рд▓рдирд╛ рдЧрд░реНрдЫреБ
рд╕рд░рд▓ рдирд┐рдпрдо:
- рдЙрддреНрдкрд╛рджрди, рд╡рд┐рдХрд╛рд╕ (рд╡рд╛ рдЕрдиреНрдп рд╡рд╛рддрд╛рд╡рд░рдг) рдХреЛ рд▓рд╛рдЧрд┐ рдореЗрд░рд╛ рд╕рдмреИ рд╕реНрдЯреНрдпрд╛рдХрд╣рд░реВ рдорд╛рд░реНрдлрдд рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЫрдиреН
рдбрдХрд░-рдХрдореНрдкреЛрдЬ рдлрд╛рдЗрд▓рд╣рд░реВ - рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓рд╣рд░реВ рдореЗрд░реЛ рд╕рдмреИ рд╡рд╛рддрд╛рд╡рд░рдгрд╣рд░реВ рдХрднрд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рд╕рдХреЗрд╕рдореНрдо
рдирдХреНрдХрд▓рдмрд╛рдЯ рдмрдЪреНрдиреБрд╣реЛрд╕реНред - рдорд▓рд╛рдИ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдХрд╛рдо рдЧрд░реНрди рдПрдЙрдЯрд╛ рд╕рд╛рдзрд╛рд░рдг рдЖрджреЗрд╢ рдЪрд╛рд╣рд┐рдиреНрдЫред
- рдореБрдЦреНрдп рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓рдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ docker-compose.yml.
- рд╡рд╛рддрд╛рд╡рд░рдгреАрдп рдЪрд░рд╣рд░реВ рдЫрд╡рд┐ рдЯреНрдпрд╛рдЧрд╣рд░реВ рд╡рд╛ рдЕрдиреНрдп рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ
рдЪрд░рд╣рд░реВ рдЬреБрди рдкрд░рд┐рд╡реЗрд╢ рдЕрдиреБрд╕рд╛рд░ рдлрд░рдХ рд╣реБрди рд╕рдХреНрдЫ (рд╕реНрдЯреЗрдЬрд┐рдЩ, рдПрдХреАрдХрд░рдг,
рдЙрддреНрдкрд╛рджрди)ред - рдЙрддреНрдкрд╛рджрди рдЪрд░рдХрд╛ рдорд╛рдирд╣рд░реВ рдорд╛рдирд╣рд░реВрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ
рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, рдпрджрд┐ рд╕реНрдЯреНрдпрд╛рдХ рдмрд┐рдирд╛ рдЙрддреНрдкрд╛рджрдирдорд╛ рд╕реБрд░реВ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗ рдпрд╕рд▓реЗ рдЬреЛрдЦрд┐рдорд╣рд░реВрд▓рд╛рдИ рдХрдо рдЧрд░реНрдЫ
рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред - рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рд╕реЗрд╡рд╛ рд╕реБрд░реБ рдЧрд░реНрди, рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН docker stack deploy - compose-file docker-compose.yml -with-registry-auth my-stack-name.
- рдХрд╛рд░реНрдп рд╡рд╛рддрд╛рд╡рд░рдг рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реБрд░реБ рднрдПрдХреЛ рдЫ рдбрдХрдХрд░-рд░рдЪрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН -d.
рдПрдЙрдЯрд╛ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рд╣реЗрд░реМрдВред
# docker-compose.yml
...
services:
my-service:
build:
context: .
image: private.registry.mine/my-stack/my-service:${MY_SERVICE_VERSION:-latest}
environment:
API_ENDPOINT: ${API_ENDPOINT:-https://production.my-api.com}
...
╨Ш
# docker-compose.override.yml
...
services:
my-service:
ports: # This is needed for development!
- 80:80
environment:
API_ENDPOINT: https://devel.my-api.com
volumes:
- ./:/project/src
...
рдо рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреБ рдбрдХрд░-рдХрдореНрдкреЛрдЬ (рдбрдХрд░-рдХрдореНрдкреЛрдЬ рдЕрдк)рд╕реНрдЯреНрдпрд╛рдХ рднрд┐рддреНрд░ рдЪрд▓рд╛рдЙрди
рд╕реНрд░реЛрдд рдХреЛрдб рдорд╛рдЙрдиреНрдЯ рднрдПрдХреЛ рд╡рд┐рдХрд╛рд╕ рдореЛрдб /рдкрд░рд┐рдпреЛрдЬрдирд╛/src.
рдо рдЙрддреНрдкрд╛рджрдирдорд╛ рдпреА рд╕рдорд╛рди рдлрд╛рдЗрд▓рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреБ! рд░ рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреБ
рдПрдЙрдЯреИ рдлрд╛рдЗрд▓ docker-compose.yml рдордЮреНрдЪрдХреЛ рд▓рд╛рдЧрд┐ред рдпрд╕рд▓рд╛рдИ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░реНрди
рдЙрддреНрдкрд╛рджрди, рдореИрд▓реЗ рдХреЗрд╡рд▓ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЯреНрдпрд╛рдЧрдХреЛ рд╕рд╛рде рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рд░ рдкрдард╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ
CI рдЪрд░рдгрдорд╛:
export MY_SERVICE_VERSION=1.2.3
docker-compose -f docker-compose.yml build
docker-compose -f docker-compose.yml push
рдЙрддреНрдкрд╛рджрдирдорд╛, рдпреЛ рдирд┐рдореНрди рдЖрджреЗрд╢рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЪрд▓рд╛рдЙрди рд╕рдХрд┐рдиреНрдЫ:
export MY_SERVICE_VERSION=1.2.3
docker stack deploy my-stack --compose-file docker-compose.yml --with-registry-auth
рд░ рдпрджрд┐ рддрдкрд╛рдЗрдБ рд╕реНрдЯреЗрдЬрдорд╛ рддреНрдпрд╣рд┐ рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдХреЗрд╡рд▓ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ
рд╕реНрдЯреЗрдЬрд┐рдЩ рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдХрд╛рдо рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░:
export MY_SERVICE_VERSION=1.2.3
export API_ENDPOINT=http://staging.my-api.com
docker stack deploy my-stack --compose-file docker-compose.yml --with-registry-auth
рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рд╣рд╛рдореАрд▓реЗ рджреБрдИ рдлрд░рдХ рдбрдХрд░-рдХрдореНрдкреЛрдЬ рдлрд╛рдЗрд▓рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдпреМрдВ, рдЬреБрди рдмрд┐рдирд╛
рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВ рддрдкрд╛рдИрдВрд╕рдБрдЧ рднрдПрдХреЛ рдХреБрдиреИ рдкрдирд┐ рд╡рд╛рддрд╛рд╡рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ!
рдкрд╛рдареНрдпрдХреНрд░рдо рдмрд╛рд░реЗ рдердк рдЬрд╛рдиреНрдиреБрд╣реЛрд╕реН
рд╕реНрд░реЛрдд: www.habr.com