แแฃแ แกแแก แแแฌแงแแแแก แแแแแแแแจแ แแแแแแแแแฃแแ แแแแแแกแขแแก แขแ แแแกแแ แแแชแแแก แแแ แแแแแ
Docker Compose แแ แแก แกแแแชแแ แ แแแกแขแ แฃแแแแขแ แกแแแฃแจแแแก แจแแกแแฅแแแแแแ
แแแ แแแ แแฅแแแแก แแแแแแแชแแแจแ แแแแแงแแแแแฃแแ แกแขแแแแกแแแแก. แแก แกแแจแฃแแแแแแก แแแซแแแแ แแแแกแแแฆแแ แแ
แแฅแแแแ แแแแแแแชแแแก แแแแแแฃแแ แแแแแแแแแขแ, แแแแคแแ แแ แแแ แขแแแ แกแแแขแแฅแกแแก แจแแแแแ
แคแแแแแแ
แแแแแแแแกแแแแแแ
แแแกแแขแฃแ แ
แแแแ แแ แแแจแแแแก แแฃ แแ แ แแก, แ แแ แแฅแแแ แจแแแแซแแแแ แแแแแแงแแแแ แแแแแ docker-compose แคแแแแ
แแแแแแแแ แแแแก แแ แแชแแกแจแ แแ แกแแฌแแ แแแ แแแ แแแแจแ? แแ แแแแแแงแแแแ แแแแแ แคแแแแ
แแแแแแ? แแแแแแแ, แแแแฎ, แแแแ แแ แแ แคแฃแแฅแชแแแแแ แแแแกแแแแก แฉแแแ แแแญแแ แแแแ แจแแแแแแ:
- แชแแแแแแก แแแขแแ แแแแแชแแ: แแแแแแ แแแกแแแแก แแแ แแแแก แชแแแแแแแแก แแแแแงแแแแแ
แฆแแ แแแฃแแแแแแ, แ แแแแแแแช แแชแแแแแ แแแแแแฃแ แแแ แแแแจแ. - แแแแคแแแฃแ แแชแแแก แฃแแฃแแแแแแงแแคแ: แแแแ แ (แแ แ แแแแแแแแก) แแแแกแแแฆแแ แแก แจแแกแแซแแแแแแแ
แแแแแ แแ แแ แจแแแแแแแ) docker-compose แคแแแแ, แ แแแแแแช แจแแชแแแแก แ แแฆแแชแแก
แแแ แแแแ, แแ docker compose แแแ แฃแแแแก แแ แแแ แคแแแแแก แแแแ แแแแแแแแแ.
แแแแกแฎแแแแแแแแ แแแแแแแแ แแแแกแ แแ แฌแแ แแแแแแก แคแแแแแแก แจแแ แแก
แแแแแแแแ แแแแก แแ แแก, แกแแแแ แแฃแแแ, แแกแฃแ แ แจแแแแแฌแแแ แแแแแก แชแแแแแแแแแ
แ แแแแฃแ แ แแ แ. แแแแกแแแแแก, แ แแแแ แช แฌแแกแ, แฉแแแแแขแแแแแฃแแแ แแแชแฃแแแแ แฌแงแแ แแก แแแแแ
แแแแขแแแแแ แ, แ แแแแแแช แจแแแชแแแก แแฅแแแแ แแแแแแแชแแแก แแแจแแแแแก แแ แแก. แแแแ แแ แกแแฌแแ แแแ แแแ แแแแกแแแแก
แแก แแแแแแ แแ แแ แแก แจแแกแแคแแ แแกแ.
แฌแแ แแแแแแจแ, แแฅแแแ แแแฅแแ แแแแกแขแแ แ แแ แแแแแ แแแแแซแแ แแ แแแชแฃแแแแ แแ แแก แแแแแแแแ แแแ
แแ แแแแแซแแแ แจแแแแ แแแแ, แ แแแแแแแแแช แแฃแจแแแแก แแฅแแแแ แแแแขแแแแแ แ (แแ แกแแ แแแกแ), แแกแ แ แแ แแฅแแแ แแ แ
แแฅแแแ แจแแแแซแแแแ แแแแแแกแขแแแแ แแ แกแแฌแงแแกแ แแแแ แ แแฃแแ แแแแ แแชแแแแแก แแแ แแจแ, แ แแแแแแช แแแแชแแแก
แแแแแก แกแแแฅแ แแแแแแชแแ, แกแแแแแแแแ แแ แ.แจ.
แแแแก แแแชแแแแ, แฉแแแ แฉแแแฃแแแแ แแ แแแแแแ แจแแแฅแแแแ แกแฃแ แแแ แแฅแแแแ แแแแแก แแแแแ แแขแฃแแ แแแ แกแแแ.
แฉแแแฃแแแแ แแแแ แแแกแ แแฆแแแจแแแ แจแแกแแแแแแกแ แขแแแแ (แจแแแแซแแแแ แแแแแแงแแแแ แกแแแแแขแแแฃแ แ
แแแ แกแแ แแ แกแฎแแ แกแแกแขแแแ แแฅแแแแ แจแแฎแแแฃแแแแแกแแแแแ ).
แแแแคแแแฃแ แแชแแแก แฃแแฃแแแแแแงแแคแ
แแแแกแฎแแแแแแแแแก แแแแแแแแกแฌแแแแแแ แแ แ แแ แแฅแแแแ แแแแแแแแแแฃแแแแแแ แจแแแซแแแแ แแแแกแฎแแแแแแแแแแก แกแชแแแแ แแแจแ
แแแแแแแแ แแแ แแ แฌแแ แแแแแ, แแแกแแแแแแ, แ แแ แแแแแญแแ แแแแ แกแฎแแแแแกแฎแแ แแแแคแแแฃแ แแชแแแก แคแแแแ.
Docker compose แแฎแแ แก แฃแญแแ แก แกแฎแแแแแกแฎแแ แจแแแแแแแก แคแแแแแแแก แแแแ แแแแแแแแก
แแแแฆแแ แกแแแแแแ แแแแคแแแฃแ แแชแแ. แ แแแแ แแฃแจแแแแก แแก, แฉแแแก แแแแแแแแจแ:
$ 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
แ แแแแ แช แแแฅแแ, docker compose แแฎแแ แก แฃแญแแ แก แแ แแแแแ แแแแแแแแชแแแก แแแแ แแแแแแแแก -
แคแแแแแแ, แแก แกแแจแฃแแแแแแก แแแซแแแแ แแแแแแแฎแแ แกแฎแแแแแกแฎแแ แแแ แแแแขแ แแแ แแแแ แ แคแแแแจแ. แฒแแแแแแแแ:
$ 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 แแแขแแแแขแฃแ แแ แแซแแแก แกแแแชแแแแฃแ แคแแแแก, แ แแแแแกแแช แแฌแแแแแ
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}
...
แแ แแฃ แแฅแแแ docker-compose build (แแ แแแซแแ) แแแ แแแแก แชแแแแแแก แแแ แแจแ
$MY_SERVICE_VERSION, แแแแจแแแแแแแ แแฅแแแแ แแแแแงแแแแแฃแแ แฃแแแแแกแแแแแแแแแ แแ แแฃ แแแแงแแแ
แแแ แแแแก แชแแแแแแก แแแแจแแแแแแแ แแจแแแแแแแแ, แแก แแแแแงแแแแแฃแแ แแฅแแแแ แแจแแแแแแแแแกแแก แแ แแแซแแแแแกแแก
แ แแแกแขแ แจแ แแแ แซแ.แ แแแแกแขแ แ.แฉแแแ.
แฉแแแ แแ แแแชแแแแแ
แแก แแแแแแแแแ, แ แแแแแแแช แฉแแแแแแก แแฃแจแแแแก, แจแแแซแแแแ แแฅแแแแแแแกแแช แแแแฅแแแแแก. แแ แแแแงแแแแ แแแแ
แแแ แขแแแ แฌแแกแแแ:
- แงแแแแ แฉแแแ แแแกแขแ แฌแแ แแแแแแกแแแแก, แแแแแแแแ แแแแกแแแแก (แแ แกแฎแแ แแแ แแแแแแแกแแแแก) แแแแแกแแแฆแแ แแแ แแแจแแแแแแ
docker-compose แคแแแแแแ - แแแแคแแแฃแ แแชแแแก แคแแแแแแ แกแแญแแ แแ แฉแแแ แงแแแแ แแแ แแแแก แแแฅแกแแแแแฃแ แแ แแแกแแคแแ แแ
แแแแแแแ แแแชแแแแ แแฃแแแแ แแแ. - แแ แแญแแ แแแแ แแ แแ แแแ แขแแแ แแ แซแแแแแ แแแแแแฃแ แแแ แแแแจแ แแฃแจแแแแแกแแแแก.
- แซแแ แแแแแ แแแแคแแแฃแ แแชแแ แแแแแแแแฃแแแ แคแแแแจแ docker-compose.yml.
- แแแ แแแแก แชแแแแแแแ แแแแแแงแแแแแ แแแแแกแแฎแฃแแแแแก แขแแแแแแก แแแกแแแแแแแ แแ แกแฎแแ
แชแแแแแแแ, แ แแแแแแแช แจแแแซแแแแ แแแแกแฎแแแแแแแแแแก แแแ แแแแแแ แแแ แแแแจแ (แแแแแแ, แแแขแแแ แแชแแ,
แฌแแ แแแแแ). - แฌแแ แแแแแแก แชแแแแแแแแก แแแแจแแแแแแแแแ แแแแแแงแแแแแ แ แแแแ แช แแแแจแแแแแแแแแ
แแแแฃแแแกแฎแแแแแ, แแก แแแชแแ แแแก แ แแกแแแแก, แแฃ แกแขแแแ แฌแแ แแแแแแก แแแ แแจแ แแแแฌแงแแแ
แแแ แแแแก แชแแแแแแก แแแงแแแแแ. - แกแแฌแแ แแแ แแแ แแแแจแ แกแแ แแแกแแก แแแกแแฌแงแแแแ แแแแแแงแแแแ แแ แซแแแแแ docker stack deploy - compose-file docker-compose.yml -with-registry-auth my-stack-name.
- แกแแแฃแจแแ แแแ แแแ แแฌแงแแแ แแ แซแแแแแแก แแแแแงแแแแแแ แแแแแ -แจแแแแแแแ -แ.
แแแแแ แจแแแฎแแแแ แแแ แขแแ แแแแแแแแก.
# 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
...
แจแแแแซแแแ แแแแแแแงแแแ docker-compose (docker-compose up)แแแกแขแแก แแแกแแจแแแแแ
แแแแแแแแ แแแแก แ แแแแแ แฉแแแแแขแแแแแฃแแ แฌแงแแ แ แแแแแ /แแ แแแฅแขแ/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
แจแแแแแแ, แฉแแแ แแแแแแแงแแแแ แแ แ แแแแกแฎแแแแแแฃแแ docker-compose แคแแแแ, แ แแแแแแ แแแ แแจแแช
แแฃแแแแแแขแ แแแแคแแแฃแ แแชแแแแ แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก แแแแแกแแแแ แแแ แแแแจแ, แ แแแแแแช แแแฅแแ!
แจแแแขแงแแแ แแแขแ แแฃแ แกแแก แจแแกแแฎแแ
แฌแงแแ แ: www.habr.com