Cyfansoddi Docker: o ddatblygiad i gynhyrchu

Paratowyd cyfieithiad trawsgrifiad y podlediad cyn lansio'r cwrs. "Gweinyddwr LinuxΒ»

Cyfansoddi Docker: o ddatblygiad i gynhyrchu

Mae Docker Compose yn offeryn anhygoel ar gyfer creu amgylchedd gwaith.
amgylchedd ar gyfer y pentwr a ddefnyddir yn eich cymhwysiad. Mae'n caniatΓ‘u ichi ddiffinio
pob cydran o'ch cymhwysiad, gan ddilyn cystrawen glir a syml yn YAML-
ffeiliau
.

Gyda dyfodiad Docker Compose v3 Gellir defnyddio'r ffeiliau YAML hyn yn uniongyrchol yn yr amgylchedd cynhyrchu wrth weithio gyda
clwstwr Swarm Dociwr.

Ond a yw hyn yn golygu y gallwch chi ddefnyddio'r un ffeil docker-compose yn
proses ddatblygu ac yn yr amgylchedd cynhyrchu? Neu ddefnyddio'r un ffeil ar gyfer
Llwyfannu? Wel, yn gyffredinol, ie, ond ar gyfer y swyddogaeth hon mae angen y canlynol arnom:

  • Rhyngosodiad Newidynnau: Defnyddio Newidynnau Amgylcheddol ar gyfer Rhai
    gwerthoedd sy'n newid ym mhob amgylchedd.
  • Gor-wneud ffurfweddiad: y gallu i ddiffinio ail (neu unrhyw un
    ffeil docker-compose ddilynol arall) a fydd yn newid rhywbeth yn gymharol
    yn gyntaf, a bydd docker compose yn gofalu am uno'r ddwy ffeil.

Gwahaniaethau rhwng ffeiliau datblygu a chynhyrchu

Yn ystod y datblygiad, mae'n fwyaf tebygol y byddwch chi eisiau gwirio newidiadau cod yn
mewn amser real. Ar gyfer hyn, mae'r gyfrol cod ffynhonnell fel arfer yn cael ei gosod yn
cynhwysydd sy'n cynnwys yr amser rhedeg ar gyfer eich cymhwysiad. Ond ar gyfer amgylchedd cynhyrchu
Nid yw'r dull hwn yn addas.

Mewn cynhyrchiad, mae gennych glwstwr gyda llawer o nodau ac mae'r gyfrol yn lleol gan
o'i gymharu Γ’'r nod y mae eich cynhwysydd (neu wasanaeth) yn rhedeg arno, felly dydych chi ddim yn gwneud hynny
Gallwch chi osod y cod ffynhonnell heb weithrediadau cymhleth sy'n cynnwys
cydamseru cod, signalau, ac ati.

Yn lle hynny, fel arfer rydyn ni eisiau creu delwedd gyda fersiwn benodol o'ch cod.
Mae'n arferol ei farcio Γ’ thag priodol (gallwch ddefnyddio semantig
fersiynau neu system arall yn Γ΄l eich disgresiwn).

Diystyru'r ffurfweddiad

O ystyried y gwahaniaethau a'r ffaith y gallai eich dibyniaethau fod yn wahanol mewn senarios
datblygu a chynhyrchu, mae'n amlwg y bydd angen ffeiliau ffurfweddu gwahanol arnom.

Mae Docker compose yn cefnogi cyfuno gwahanol ffeiliau cyfansoddi i
cael y cyfluniad terfynol. Gellir gweld sut mae hyn yn gweithio yn yr enghraifft:

$ 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

Fel y soniwyd, mae docker compose yn cefnogi cyfuno sawl compose-
ffeiliau, mae hyn yn caniatΓ‘u ichi ddiystyru gwahanol baramedrau yn yr ail ffeil. Er enghraifft:

$ 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

Nid yw'r cystrawen hon yn gyfleus iawn yn ystod y broses ddatblygu pan fydd y gorchymyn
bydd angen ei wneud sawl gwaith.

Yn ffodus, mae docker compose yn chwilio'n awtomatig am ffeil arbennig o'r enw
docker-compose.override.yml i ddiystyru gwerthoedd docker-compose.yml. Os
Os byddwch chi'n ailenwi'r ail ffeil, fe gewch chi'r un canlyniad, dim ond gan ddefnyddio'r gorchymyn gwreiddiol:

$ 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

Iawn, mae hynny'n ei gwneud hi'n haws i'w gofio.

Rhyngosod newidynnau

Cymorth ffeiliau ffurfweddu rhyngosodiad
newidynnau
a gwerthoedd diofyn. Hynny yw, gallwch wneud y canlynol:

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

Ac os gwnewch chi adeiladu (neu wthio) docker-compose heb newidyn amgylcheddol
$FY_FERIWN_GWASANAETH, bydd y gwerth yn cael ei ddefnyddio diweddaraf, ond os ydych chi'n gosod
gwerth y newidyn amgylcheddol cyn yr adeiladwaith, bydd yn cael ei ddefnyddio yn ystod yr adeiladwaith neu'r gwthio
i'r gofrestr preifat.cofrestrfa.min.

Fy egwyddorion

Gallai'r dulliau sy'n gweithio i mi fod yn ddefnyddiol i chi hefyd. Rwy'n dilyn y rhain
rheolau syml:

  • Mae fy holl bentyrrau ar gyfer cynhyrchu, datblygu (neu amgylcheddau eraill) wedi'u diffinio drwy
    ffeiliau docker-compose.
  • Y ffeiliau ffurfweddu sydd eu hangen i gwmpasu fy holl amgylcheddau yw fel
    osgoi dyblygu.
  • Mae angen un gorchymyn syml arnaf i weithio ym mhob amgylchedd.
  • Mae'r prif gyfluniad wedi'i ddiffinio yn y ffeil docker-compose.yml.
  • Defnyddir newidynnau amgylcheddol i ddiffinio tagiau delwedd neu bethau eraill
    newidynnau a all newid o amgylchedd i amgylchedd (llwyfannu, integreiddio,
    cynhyrchu).
  • Defnyddir gwerthoedd y newidynnau ar gyfer cynhyrchu fel gwerthoedd gan
    yn ddiofyn, mae hyn yn lleihau'r risgiau rhag ofn rhedeg y pentwr mewn cynhyrchiad heb
    gosod newidyn amgylcheddol.
  • I lansio'r gwasanaeth yn yr amgylchedd cynhyrchu, defnyddiwch y gorchymyn defnyddio pentwr dociwr - cyfansoddi-ffail docker-compose.yml -gyda-awdurdod-cofrestrfa fy enw-pentwr.
  • Lansir yr amgylchedd gwaith gan ddefnyddio'r gorchymyn docker-compose up -d.

Gadewch i ni edrych ar enghraifft syml.

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

Gallaf ddefnyddio docker-compose (docker-compose up)i gychwyn y pentwr yn
modd datblygu gyda'r cod ffynhonnell wedi'i osod yn /prosiect/src.

Gallaf ddefnyddio'r un ffeiliau hyn mewn cynhyrchiad! A gallwn ddefnyddio'n union
yr un ffeil docker-compose.yml ar gyfer llwyfannu. I ddefnyddio hwn i
cynhyrchu, dim ond angen i mi adeiladu ac anfon delwedd gyda thag wedi'i ddiffinio ymlaen llaw
yng nghyfnod y CI:

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

Ar gynhyrchu, gellir rhedeg hyn gyda'r gorchmynion canlynol:

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

Ac os ydych chi eisiau gwneud yr un peth ar y llwyfan, does ond angen i chi ddiffinio
Newidynnau amgylcheddol angenrheidiol ar gyfer gweithio yn yr amgylchedd llwyfannu:

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

Fe wnaethon ni ddefnyddio dau ffeil docker-compose gwahanol yn y diwedd, sydd hebddynt
Gellir defnyddio dyblygiadau ffurfweddiad ar gyfer unrhyw un o'ch amgylcheddau!

Dysgwch fwy am y cwrs "Gweinyddwr LinuxΒ»

Ffynhonnell: hab.com

Prynu gwesteio dibynadwy ar gyfer gwefannau sydd Γ’ diogelwch DDoS, gweinyddwyr VPS VDS πŸ”₯ Prynu cynnal gwefannau dibynadwy gyda diogelwch DDoS, gweinyddion VPS VDS | ProHoster