Docker Compose: arendusest tootmiseni

Podcaste transkriptsiooni tĂ”lge on valmistatud kursuse alguse eelĂ”htul. „Linuxi administraator“

Docker Compose: arendusest tootmiseni

Docker Compose on hÀmmastav tööriist, mis aitab luua töökeskkonda
tehnoloogilistele hunnikutele, mida teie rakendus kasutab. See vÔimaldab teil mÀÀratleda
igal teie rakenduse komponendil, jĂ€rgides selget ja lihtsat sĂŒntaksit YAML-
failides.
.

Docker compose v3 saabudes vÔib neid YAML-faile kasutada otse töökeskkonnas, töötades klastriga.
Aga kas see tÀhendab, et saate sama docker-compose faili kasutada Docker Swarm.

arendusprotsessis ja tootmis keskkonnas? VÔi kasutada sama faili
etappide jaoks? Noh, ĂŒldiselt – jah, kuid selle funktsionaalsuse jaoks on vajalik jĂ€rgnev:
Muuttuvate muutmine: keskkonnamuutujate kasutamine teatud

  • vÀÀrtuste jaoks, mis muutuvad igas keskkonnas.
    Konfigureerimise ĂŒlekirjutamine: vĂ”imalus mÀÀratleda teine (vĂ”i mĂ”ni
  • muud jĂ€reltulevat) docker-compose fail, mis muudab midagi esimeses failis,
    ja docker compose hoolitseb mĂ”lema faili ĂŒhendamise eest.
    Arenduse ja tootmise failide erinevused

Arenduse kÀigus soovite tÔenÀoliselt kontrollida koodi muudatusi

Arenduste tegemise ajal soovite tÔenÀoliselt jÀlgida koodi muudatusi
reaalajas. Selle saavutamiseks monteeritakse tavaliselt koodiga konteiner,
kus asub teie rakenduse tööaeg. Kuid tootmis keskkonnas
selline lÀhenemine ei sobi.

Tootmises on teil klaster, mis koosneb paljusid sÔlmedest, ja konteiner on kohaliku
sÔlme suhtes, kus teie konteiner (vÔi teenus) töötab, seega te ei
saa monteerida lÀhtekoodi ilma keeruliste toiminguteta, mis hÔlmavad
koodi sĂŒnkroniseerimist, signaale jne.

Selle asemel soovime tavaliselt luua pildi, mis sisaldab konkreetset versiooni teie koodist.
Seda on harjutatud mÀrgistama sobiva sildiga (vÔite kasutada semantilist
versioonihaldust vĂ”i muud sĂŒsteemi teie valikul).

Konfiguratsiooni ĂŒlekirjutamine

Kuna teie sÔltuvused vÔivad erineda arenduse ja tootmise stsenaariumides, on selge, et vajame erinevaid konfiguratsioonifaile.
Docker compose toetab erinevate compose-failide ĂŒhendamist lĂ”pliku konfiguratsiooni saamiseks. Kuidas see töötab, on nĂ€idatud nĂ€iteks:

Docker compose toetab erinevate compose-failide ĂŒhendamist, et
saada lÔplik konfiguratsioon. Kuidas see töötab, nÀete jÀrgmisel nÀitel:

$ 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  | 
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

Nagu öeldud, docker compose toetab mitme compose-faili ĂŒhendamist,
see vĂ”imaldab teises failis erinevaid parameetreid ĂŒletada. NĂ€iteks:

$ 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  | 
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

See sĂŒntaks ei ole arendamise kĂ€igus eriti mugav, kui kĂ€sku
tuleb mitu korda tÀita.

Õnneks otsib docker compose automaatselt spetsiaalset faili nimega
docker-compose.override.yml vÀÀrtuste ĂŒlekirjutamiseks docker-compose.yml. Kui
kui teise faili nime muuta, saadakse sama tulemus algse kÀsu abil:

$ mv docker-compose.second.yml docker-compose.override.yml
$ docker-compose up
KĂ€ivitamine composeconfigs_whale_1
Ühendatakse composeconfigs_whale_1-ga
whale_1  |  ______
whale_1  | 
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 vÀljus koodiga 0

Hea, nii on lihtsam meelde jÀtta.

Muutujate interpolatsioon

Konfiguratsioonifailid toetavad interpolatsiooni
muutujate
ja vaikevÀÀrtusi. See tÀhendab, et saate teha jÀrgmist:

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

Ja kui te kÀivitate docker-compose build (vÔi push) ilma keskkonnamuutujata
$MY_SERVICE_VERSION, kasutatakse vÀÀrtust latest, aga kui seadistate
keskkonnamuutuja vÀÀrtuse enne ehitamist, kasutatakse seda ehitamisel vÔi pushimisel
registrisse private.registry.mine.

Minu pÔhimÔtted

Minu mugavad lÀhenemisviisid vÔivad olla kasulikud ka teile. JÀrgnen nendele
lihtsatele reeglitele:

  • KĂ”ik minu tootmis-, arendus- (vĂ”i muude keskkondade) stekid mÀÀratakse
    docker-compose failide kaudu.
  • Konfiguratsioonifailid, mis on vajalikud kĂ”igi minu keskkondade katmiseks, pĂŒĂŒavad
    maksimaalselt vÀltida dubleerimist.
  • Vajan igas keskkonnas töötamiseks ĂŒhte lihtsat kĂ€sku.
  • PĂ”hikonfiguratsioon mÀÀratakse failis docker-compose.yml.
  • Keskkonnamuutujad kasutatakse piltide silte vĂ”i muid
    muutujate mÀÀratlemiseks, mis vÔivad keskkonniti (staging, integreerimine,
    tootmine) erineda.
  • TootmisvÀÀrtusi kasutatakse vaikevÀÀrtustena, et minimeerida riske, kui
    steaki kÀivitamisel tootmises ei ole seadistatud keskkonnamuutujat.
    Teenuse kÀivitamiseks tootmiskeskkonnas kasutatakse kÀsku
  • docker stack deploy --compose-file docker-compose.yml --with-registry-auth my-stack-name Töökeskkond kĂ€ivitatakse kĂ€sklusega.
  • Vaatame lihtsat nĂ€idet. docker-compose up -d.

VÔin kasutada

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

JA

# 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) , et kĂ€ivitada stekarendusreĆŸiimis, kus lĂ€htekood on monteeritud.
arendamisreĆŸiimis, kus allikas on montaaĆŸis /project/src.

Saab kasutada samu faile tootmisriigis! Ja ma vÔiksin kasutada tÀpselt
sama faili docker-compose.yml etappimisel. Selle kÀivitamiseks tootmise keskkonnas pean lihtsalt koguma ja saatma pildi kindla sildiga
CI etapil:
export MY_SERVICE_VERSION=1.2.3 docker-compose -f docker-compose.yml build docker-compose -f docker-compose.yml push

Tootmisriigis saab seda kÀivitada jÀrgmiste kÀskudega:

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

Ja kui soovite teha sama etapis, tuleb lihtsalt mÀÀrata

vajalikud keskkonnamuutujad töötamiseks etappi keskkonnas:
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

KokkuvÔttes kasutasime kahte erinevat docker-compose faili, mis vÔivad kasutada

konfiguratsioonide dubleerimist mis tahes teie keskkonnas!
konfiguratsioonide dubleerimist saab kasutada teie igas keskkonnas!

Tutvuge kursusega „Linuxi administraator“

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster