Docker Compose: mai ka hoʻomohala ʻana i ka hana

Ua hoʻomākaukau ʻia ka unuhi ʻana o ka transcription podcast i ka hoʻomaka ʻana o ka papa "Ka Luna Hoʻokele Linux"

Docker Compose: mai ka hoʻomohala ʻana i ka hana

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 YAML-
waihona
.

Me ka hiki ana mai o docker haku v3 hiki ke hoʻohana pololei ʻia kēia mau faila YAML i ke kaiapuni hana i ka wā e hana pū ai
pūʻulu Pahu Docker.

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 huikau
nā mea hoʻololi
a me nā waiwai paʻamau. ʻO ia hoʻi, hiki iā ʻoe ke hana i kēia:

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 "Ka Luna Hoʻokele Linux"

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka