Docker Compose: ho tloha nts'etsopele ho isa tlhahiso

Phetolelo ea sengoloa sa podcast e lokisitsoeng ka tebello ea ho qala ha thupelo "Linux Administrator"

Docker Compose: ho tloha nts'etsopele ho isa tlhahiso

Docker Compose ke sesebelisoa se makatsang sa ho theha se sebetsang
tikoloho bakeng sa stack e sebelisitsoeng ts'ebelisong ea hau. E u lumella ho hlalosa
karolo e 'ngoe le e' ngoe ea kopo ea hau, ho latela syntax e hlakileng le e bonolo ho YAML-
lifaele
.

Ka ho fihla ha docker e theha v3 lifaele tsena tsa YAML li ka sebelisoa ka kotloloho tikolohong ea tlhahiso ha u sebetsa le
sehlopha Sesepa sa Docker.

Empa na see se bolela hore u ka sebelisa faele e tšoanang ea docker-compose ho
ts'ebetso ea ntlafatso le tikolohong ea tlhahiso? Kapa sebelisa faele e tšoanang bakeng sa
sethaleng? Ho joalo, ka kakaretso, e, empa bakeng sa ts'ebetso ena re hloka tse latelang:

  • Phetolelo e feto-fetohang: ho sebelisa mefuta-futa ea tikoloho bakeng sa ba bang
    boleng bo fetohang tikolohong ka 'ngoe.
  • Configuration override: bokhoni ba ho hlalosa motsotsoana (kapa leha e le efe
    another subsequent) docker-compose file e tla fetola ho hong mabapi le
    pele, 'me docker compose e tla hlokomela ho kopanya lifaele ka bobeli.

Phapang lipakeng tsa lifaele tsa nts'etsopele le tlhahiso

Nakong ea nts'etsopele, u tla batla ho hlahloba liphetoho tsa khoutu ho
hona joale. Ho etsa sena, hangata molumo o nang le khoutu ea mohloli o kenngoa
setshelo se nang le nako ea ho sebetsa bakeng sa ts'ebeliso ea hau. Empa bakeng sa tikoloho ea tlhahiso
Mokhoa ona ha oa lokela.

Ka tlhahiso, u na le sehlopha se nang le li-node tse ngata, 'me molumo ke oa sebakeng seo
e amanang le node eo setshelo sa hau (kapa tšebeletso) se sebetsang ho eona, kahoo ha u etse joalo
o ka beha khoutu ea mohloli ntle le ts'ebetso e rarahaneng e kenyelletsang
Kamahanyo ya khoutu, matshwao, jj.

Ho e-na le hoo, hangata re batla ho etsa setšoantšo ka mofuta o itseng oa khoutu ea hau.
Ke tloaelo ho e tšoaea ka tag e nepahetseng (o ka sebelisa semantic
phetolelo kapa sistimi e 'ngoe ka boikhethelo ba hau).

Phethahatso ea Phetoho

Ka lebaka la liphapang le hore ho itšetleha ha hao ho ka fapana ka maemo
nts'etsopele le tlhahiso, ho hlakile hore re tla hloka lifaele tse fapaneng tsa tlhophiso.

Docker compose e tšehetsa ho kopanya lifaele tse fapaneng tsa ho ngola ho
fumana tlhophiso ea ho qetela. Tsela eo sena se sebetsang ka eona e ka bonoa mohlaleng:

$ 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

Joalokaha ho boletsoe, "docker compose" e tšehetsa ho kopanya liqapi tse ngata -
difaele, sena se o dumella ho tlola ditekanyetso tse fapaneng faeleng ya bobedi. Ka mohlala:

$ 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

Syntax ena ha e bonolo haholo nakong ea nts'etsopele, ha taelo
e tla hloka ho etsoa hangata.

Ka lehlohonolo, docker compose e batla ka bo eona faele e khethehileng e bitsoang
docker-compose.override.yml ho nyenyefatsa boleng docker-compose.yml. Haeba
reha lebitso la bobeli faele, o fumana sephetho se tšoanang, o sebelisa feela taelo ea mantlha:

$ 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

Ho lokile, ho bonolo ho hopola.

Phanollo ya Diphapano

Tšehetso ea lifaele tsa tlhophiso kenyeletso
mefuta e fapaneng
le boleng ba kamehla. Ke hore, o ka etsa tse latelang:

services:
  my-service:
    build:
      context: .
    image: private.registry.mine/my-stack/my-service:${MY_SERVICE_VERSION:-latest}
...

'Me haeba u etsa joalo docker-compose build (kapa push) ntle le ho feto-fetoha ha tikoloho
$MY_SERVICE_VERSION, boleng bo tla sebelisoa morao-raoempa haeba u beha
boleng ba tikoloho e feto-fetohang pele ho moaho, e tla sebelisoa ha ho hahoa kapa ho sututsa
ho ngodisa poraefete.registry.mine.

Melao-motheo ea ka

Mekhoa e sebetsang ho 'na e ka u sebeletsa le uena. Ke latela tsena
melao e bonolo:

  • Lipalo tsohle tsa ka tsa tlhahiso, nts'etsopele (kapa libaka tse ling) li hlalosoa ka
    docker-compose files
  • Lifaele tsa tlhophiso tse hlokahalang ho koahela libaka tsohle tsa ka, ka hohle kamoo ho ka khonehang
    qoba ho pheta-pheta.
  • Ke hloka taelo e le 'ngoe e bonolo ho sebetsa tikolohong e ngoe le e ngoe.
  • Tlhophiso e kholo e hlalositsoe faeleng docker-compose.yml.
  • Liphetoho tsa tikoloho li sebelisoa ho hlalosa li-tag tsa litšoantšo kapa tse ling
    mefuta e fapaneng e ka fapana ho ea ka tikoloho (mokhahlelo, ho kopanya,
    tlhahiso).
  • Boleng ba mefuta e fapaneng ea tlhahiso bo sebelisoa e le boleng ba
    ka kamehla, sena se fokotsa likotsi haeba stack e qala tlhahiso ntle le
    seta tikoloho e feto-fetohang.
  • Ho qala tshebeletso sebakeng sa tlhahiso, sebedisa taelo docker stack deploy - compose-file docker-compose.yml -with-registry-auth my-stack-name.
  • Sebaka sa ho sebetsa se qalisoa ho sebelisoa taelo docker-kopanya -d.

A re shebeng mohlala o bonolo.

# 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
...

Nka sebelisa docker-compose (docker-compose up)ho kenya stack
mokhoa oa nts'etsopele o nang le khoutu ea mohloli o kentsoeng /project/src.

Nka sebelisa lifaele tsena tse tšoanang tlhahisong! 'Me ka sebele nka sebelisa
faele e tšoanang docker-compose.yml bakeng sa sethala. Ho atolosa sena ho
tlhahiso, ke hloka feela ho haha ​​​​le ho romela setšoantšo ka tag e hlalositsoeng esale pele
sethaleng sa CI:

export MY_SERVICE_VERSION=1.2.3
docker-compose -f docker-compose.yml build
docker-compose -f docker-compose.yml push

Ka tlhahiso, sena se ka tsamaisoa ho sebelisoa litaelo tse latelang:

export MY_SERVICE_VERSION=1.2.3
docker stack deploy my-stack --compose-file docker-compose.yml --with-registry-auth

'Me haeba u batla ho etsa se tšoanang sethaleng, u hloka feela ho hlalosa
maemo a hlokahalang bakeng sa ho sebetsa sebakeng sa sethala:

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

Ka lebaka leo, re sebelisitse lifaele tse peli tse fapaneng tsa docker-compose, tseo ntle le tsona
Litlhophiso tse kopitsoang li ka sebelisoa tikolohong efe kapa efe eo u nang le eona!

Ithute haholoanyane ka thupelo "Linux Administrator"

Source: www.habr.com

Eketsa ka tlhaloso