Fandikana ny transcription podcast nomanina ho fiandrasana ny fanombohan'ny fampianarana
Docker Compose dia fitaovana mahagaga hamoronana asa
tontolo iainana ho an'ny stack ampiasaina amin'ny fampiharanao. Izany dia ahafahanao mamaritra
ny singa tsirairay amin'ny fampiharanao, manaraka ny syntax mazava sy tsotra ao
rakitra
Miaraka amin'ny fahatongavan'ny
sampahom-boaloboka
Saingy midika ve izany fa afaka mampiasa ny docker-compose file ianao
dingana fampandrosoana sy eo amin'ny tontolo famokarana? Na ampiasao ny rakitra mitovy amin'ny
fandaharana? Eny, amin'ny ankapobeny, eny, fa ho an'ity fampiasa ity dia mila ireto manaraka ireto isika:
- Variable interpolation: mampiasa ny fari-piainana ho an'ny sasany
soatoavina izay miova isaky ny tontolo iainana. - Fanombanana ny Configuration: fahafahana mamaritra segondra iray (na iray
hafa manaraka) docker-compose rakitra izay hanova zavatra momba ny
Voalohany, ary ny docker compose dia hikarakara ny fampifangaroana ireo rakitra roa ireo.
Ny fahasamihafana eo amin'ny rakitra fampandrosoana sy famokarana
Mandritra ny fampandrosoana dia mety ho tianao ny hanamarina ny fiovan'ny code
amin'ny fotoana katroka. Mba hanaovana izany, matetika ny volume miaraka amin'ny kaody loharano dia napetraka ao
fitoeran-javatra misy fotoana fampandehanana ny fampiharanao. Fa ho an'ny tontolo famokarana
Tsy mety io fomba io.
Amin'ny famokarana dia manana cluster misy nodes maro ianao, ary eo an-toerana ny volume
mifandraika amin'ny node misy ny fitoeranao (na serivisy) mandeha, ka tsy manao izany ianao
azonao atao ny mametraka ny kaody loharano tsy misy asa sarotra misy
code synchronization, signals, sns.
Fa kosa, te-hamorona sary miaraka amin'ny dikan-kaody manokana izahay.
Fanao ny manamarika azy amin'ny marika mety (azonao ampiasaina ny semantic
versioning na rafitra hafa araka ny fanapahan-kevitrao).
Configuration Override
Raha jerena ny fahasamihafana sy ny mety ho tsy mitovy ny fiankinanao amin'ny sehatra
fampandrosoana sy famokarana, mazava ho azy fa mila antontan-taratasy fanamafisana samihafa isika.
Docker compose dia manohana ny fampifangaroana ireo rakitra compose samihafa
mahazo ny fanamafisana farany. Ny fomba fiasan'izany dia azo jerena amin'ny ohatra:
$ 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
Araka ny voalaza, ny docker compose dia manohana ny fampifangaroana compose maro -
fisie, mamela anao hanilika ireo masontsivana isan-karazany amin'ny rakitra faharoa izany. Ohatra:
$ 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
Ity syntax ity dia tsy dia mety loatra mandritra ny fampandrosoana, rehefa ny baiko
mila atao imbetsaka.
Soa ihany fa ny docker compose dia mitady fisie manokana antsoina hoe
docker-compose.override.yml hanilika ny soatoavina docker-compose.yml. raha
ovay anarana ny rakitra faharoa, mahazo valiny mitovy ianao, mampiasa ny baiko voalohany ihany:
$ 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
Eny, mora kokoa ny mitadidy izany.
Interpolation of Variables
Fanohanana ny rakitra fanamafisana
hiovaova
services:
my-service:
build:
context: .
image: private.registry.mine/my-stack/my-service:${MY_SERVICE_VERSION:-latest}
...
Ary raha manao izany ianao docker-compose build (na manosika) tsy misy fiovan'ny tontolo iainana
$MY_SERVICE_VERSION, ny sandany no hampiasaina faranyfa raha nametraka
ny sandan'ny fari-piainan'ny tontolo iainana alohan'ny fanorenana, dia hampiasaina rehefa manorina na manosika
mankany amin'ny rejisitra private.registry.mine.
Ny fitsipiko
Mety hiasa ho anao koa ireo fomba fiasa mety amiko. Arahiko ireto
fitsipika tsotra:
- Ny stacks rehetra ho an'ny famokarana, ny fampandrosoana (na ny tontolo hafa) dia voafaritra amin'ny alalan'ny
docker-compose rakitra - Ny fichier configuration ilaina mba handrakotra ny tontoloko rehetra, araka izay azo atao
ialao ny dika mitovy. - Mila baiko tsotra iray aho mba hiasa amin'ny tontolo tsirairay.
- Voafaritra ao amin'ny rakitra ny fandrindrana fototra docker-compose.yml.
- Ny fari-piainan'ny tontolo iainana dia ampiasaina hamaritana ny mari-pamantarana sary na hafa
Variable izay mety tsy mitovy amin'ny tontolo iainana (fandrindrana, fampidirana,
famokarana). - Ny sandan'ny fari-pamokarana dia ampiasaina ho sanda ho an'ny
Amin'ny alΓ lan'ny default, izany dia manamaivana ny risika raha toa ka atomboka amin'ny famokarana tsy misy izany
mametraka fari-piainana manodidina. - Mba hanombohana serivisy amin'ny tontolo famokarana dia ampiasao ny baiko fametrahana docker stack - compose-file docker-compose.yml -with-registry-auth my-stack-name.
- Ny tontolon'ny asa dia manomboka mampiasa ny baiko docker-mandrafitra -d.
Andeha isika hijery ohatra tsotra.
# 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
...
Afaka mampiasa aho docker-compose (docker-compose up)hampandeha ny stack
fomba fampandrosoana miaraka amin'ny kaody loharano napetraka ao /projet/src.
Afaka mampiasa ireo rakitra ireo ihany aho amin'ny famokarana! Ary azoko ampiasaina tokoa
mitovy rakitra docker-compose.yml ho an'ny fampisehoana. Mba hanitarana izany amin'ny
famokarana, mila manamboatra sy mandefa ny sary miaraka amin'ny marika efa voafaritra mialoha aho
amin'ny dingana CI:
export MY_SERVICE_VERSION=1.2.3
docker-compose -f docker-compose.yml build
docker-compose -f docker-compose.yml push
Amin'ny famokarana dia azo atao ny mampiasa ireto baiko manaraka ireto:
export MY_SERVICE_VERSION=1.2.3
docker stack deploy my-stack --compose-file docker-compose.yml --with-registry-auth
Ary raha te hanao toy izany koa eny an-tsehatra ianao dia mila mamaritra fotsiny
Ny fari-piainan'ny tontolo iainana ilaina amin'ny fiasana amin'ny tontolon'ny sehatra:
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
Vokatr'izany dia nampiasa docker-compose docker roa izahay, izay tsy misy
Azo ampiasaina amin'ny tontolo rehetra anananao ny fanamafisana dika mitovy!
Mianara bebe kokoa momba ny fianarana
Source: www.habr.com