Ua hoʻomākaukau ʻia ka unuhi ʻana o ka transcription podcast i ka hoʻomaka ʻana o ka papa
He mea hana kupanaha ʻo Docker Compose no ka hana ʻana i kahi hana
kaiapuni no ka waihona i hoʻohana ʻia i kāu noi. Hiki iā ʻoe ke wehewehe
kēlā me kēia ʻāpana o kāu noi, e hahai ana i kahi syntax maʻalahi a maʻalahi
waihona
Me ka hiki ana mai o
pūʻulu
Akā ʻo kēia ke ʻano hiki iā ʻoe ke hoʻohana i ka faila docker-compose i loko
kaʻina hana hoʻomohala a i loko o ke kaiapuni hana? A i ʻole e hoʻohana i ka faila like no
hoʻokani pila? ʻAe, ma ka laulā, ʻae, akā no kēia hana pono mākou i kēia:
- Hoʻohui like ʻole: hoʻohana ʻana i nā mea hoʻololi kaiapuni no kekahi
nā waiwai e loli ana i kēlā me kēia kaiapuni. - Hoʻopau hoʻonohonoho: hiki ke wehewehe i kahi kekona (a i ʻole
kekahi ma hope) docker-compose file e hoʻololi i kekahi mea e pili ana
ʻO ka mua, a e mālama ka docker compose i ka hoʻohui ʻana i nā faila ʻelua.
Nā ʻokoʻa ma waena o ka hoʻomohala ʻana a me nā faila hana
I ka wā o ka hoʻomohala ʻana, makemake paha ʻoe e nānā i nā loli code
manawa maoli. No ka hana ʻana i kēia, hoʻokomo pinepine ʻia ka leo me ke code kumu
pahu i loaʻa ka manawa holo no kāu noi. Akā no kahi ʻano hana
ʻAʻole kūpono kēia ala.
I ka hana ʻana, loaʻa iā ʻoe kahi puʻupuʻu me nā nodes he nui, a ʻo ka leo he kūloko
pili i ka node kahi e holo ai kāu pahu (a i ʻole lawelawe), no laila ʻaʻole ʻoe
hiki iā ʻoe ke kau i ke code kumu me ka ʻole o nā hana paʻakikī e komo pū
code synchronization, hōʻailona, etc.
Akā, makemake mākou e hana i kiʻi me kahi mana kikoʻī o kāu code.
He mea maʻamau ka mākaʻikaʻi ʻana me ka tag kūpono (hiki iā ʻoe ke hoʻohana i ka semantic
versioning a i ʻole ʻōnaehana ʻē aʻe ma kāu manaʻo).
Hoʻopau hoʻonohonoho
Hāʻawi ʻia i nā ʻokoʻa a ʻokoʻa paha kāu mau hilinaʻi i nā hiʻohiʻona
ka hoʻomohala ʻana a me ka hana ʻana, ua maopopo e pono mākou i nā faila hoʻonohonoho like ʻole.
Kākoʻo ʻo Docker compose i ka hoʻohui ʻana i nā faila haku like ʻole
loaʻa ka hoʻonohonoho hope. Pehea kēia hana e ʻike ʻia ma ka laʻana:
$ 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
E like me ka mea i ʻōlelo ʻia, kākoʻo ka docker compose i ka hoʻohui ʻana i nā mele he nui -
nā faila, hiki iā ʻoe ke hoʻopau i nā ʻāpana like ʻole i ka faila ʻelua. ʻo kahi laʻana:
$ 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
ʻAʻole maʻalahi kēia syntax i ka wā o ka hoʻomohala ʻana, i ka wā o ke kauoha
pono e hana i na manawa he nui.
ʻO ka mea pōmaikaʻi, ʻimi maʻalahi ka docker compose i kahi faila kūikawā i kapa ʻia
docker-compose.override.yml e hoopau i na waiwai docker-compose.yml. ^ E Ha yM. Inā
inoa hou i ka faila ʻelua, loaʻa iā ʻoe ka hopena like, me ka hoʻohana ʻana i ke kauoha kumu:
$ 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
ʻAe, ʻoi aku ka maʻalahi o ka hoʻomanaʻo.
Huina o na mea hoololi
Kākoʻo nā faila hoʻonohonoho
nā mea hoʻololi
services:
my-service:
build:
context: .
image: private.registry.mine/my-stack/my-service:${MY_SERVICE_VERSION:-latest}
...
A inā ʻoe e hana hana docker-compose (a i ʻole pana) me ka hoololi ole kaiapuni
$MY_SERVICE_VERSION, e hoʻohana ʻia ka waiwai mea houakā inā hoʻonoho ʻoe
ka waiwai o ka hoʻololi kaiapuni ma mua o ke kūkulu ʻana, e hoʻohana ʻia ia i ke kūkulu ʻana a i ʻole ke kiki ʻana
i ka papa inoa private.registry.mine.
ʻO kaʻu mau kumu
ʻO nā ala e hana ai iaʻu e hana pū kekahi iā ʻoe. Ke hahai nei au i keia
nā lula maʻalahi:
- Ua wehewehe ʻia kaʻu mau waihona no ka hana ʻana, hoʻomohala (a i ʻole nā kaiapuni ʻē aʻe).
docker-compose faila - Pono nā faila hoʻonohonoho e uhi i kaʻu mau kaiapuni a pau, e like me ka hiki
pale i ka hana hou. - Pono wau i hoʻokahi kauoha maʻalahi e hana i kēlā me kēia kaiapuni.
- Ua wehewehe ʻia ka hoʻonohonoho nui ma ka faila docker-compose.yml.
- Hoʻohana ʻia nā ʻano like ʻole e wehewehe i nā kiʻi a i ʻole nā mea ʻē aʻe
nā ʻano like ʻole mai ke kaiapuni a i ke kaiapuni (ka hoʻonohonoho, hoʻohui,
hana ʻana). - Hoʻohana ʻia nā waiwai o nā mea hoʻololi i nā waiwai no
ma ka maʻamau, hōʻemi kēia i nā pilikia inā hoʻokuʻu ʻia ka waihona ma ka hana ʻole
hoʻonohonoho kaiapuni. - No ka hoʻomaka ʻana i kahi lawelawe ma kahi ʻano hana, e hoʻohana i ke kauoha hoʻokomo ʻia ka waihona docker - compose-file docker-compose.yml -with-registry-auth my-stack-name.
- Hoʻomaka ka ʻāina hana e hoʻohana i ke kauoha makemake-hoʻonohoʻia -d.
E nānā kākou i kahi laʻana maʻalahi.
# 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
...
Hiki iaʻu ke hoʻohana docker-composee holo i ka waihona i loko
ʻano hoʻomohala me ka code kumu i kau ʻia i loko /project/src.
Hiki iaʻu ke hoʻohana i kēia mau faila i ka hana ʻana! A hiki loa iaʻu ke hoʻohana
waihona like docker-compose.yml no ka hoolele. E hoʻonui i kēia i
hana, pono wau e kūkulu a hoʻouna i ke kiʻi me kahi hōʻailona i koho mua ʻia
ma ke kahua CI:
export MY_SERVICE_VERSION=1.2.3
docker-compose -f docker-compose.yml build
docker-compose -f docker-compose.yml push
I ka hana ʻana, hiki ke holo me ka hoʻohana ʻana i kēia mau kauoha:
export MY_SERVICE_VERSION=1.2.3
docker stack deploy my-stack --compose-file docker-compose.yml --with-registry-auth
A inā makemake ʻoe e hana like ma ke kahua, pono ʻoe e wehewehe
nā ʻano hoʻololi kaiapuni kūpono no ka hana ʻana i ke kaiapuni hoʻokūkū:
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
ʻO ka hopena, ua hoʻohana mākou i ʻelua mau faila docker-compose, me ka ʻole
Hiki ke hoʻohana ʻia nā hoʻonohonoho pālua no kēlā me kēia kaiapuni i loaʻa iā ʻoe!
E ʻike hou aku e pili ana i ka papa
Source: www.habr.com