Itumọ itumọ adarọ-ese ti a pese sile ni ifojusona ti ibẹrẹ iṣẹ-ẹkọ naa
Docker Compose jẹ ohun elo iyalẹnu fun ṣiṣẹda iṣẹ kan
ayika fun akopọ ti a lo ninu ohun elo rẹ. O faye gba o lati setumo
paati kọọkan ti ohun elo rẹ, ni atẹle sintasi mimọ ati irọrun ninu
awọn faili
Pẹlu awọn dide ti
iṣupọ
Ṣugbọn eyi tumọ si pe o le lo faili docker-compose kanna ni
ilana idagbasoke ati ni agbegbe iṣelọpọ? Tabi lo faili kanna fun
iṣeto? O dara, ni gbogbogbo, bẹẹni, ṣugbọn fun iṣẹ ṣiṣe yii a nilo atẹle naa:
- Ayipada interpolation: lilo awọn oniyipada ayika fun diẹ ninu awọn
awọn iye ti o yipada ni agbegbe kọọkan. - Iṣeto ni idojuk: agbara lati ṣalaye iṣẹju-aaya (tabi eyikeyi
miiran ti o tẹle) faili docker-compose ti yoo yi nkan pada nipa
akọkọ, ati docker compose yoo ṣe abojuto apapọ awọn faili mejeeji.
Awọn iyatọ laarin idagbasoke ati awọn faili iṣelọpọ
Lakoko idagbasoke, o ṣeese yoo fẹ lati ṣayẹwo awọn iyipada koodu ninu
akoko gidi. Lati ṣe eyi, nigbagbogbo iwọn didun pẹlu koodu orisun ti gbe sinu
eiyan ti o ni awọn akoko asiko isise fun ohun elo rẹ. Ṣugbọn fun agbegbe iṣelọpọ
Ọna yii ko dara.
Ni iṣelọpọ, o ni iṣupọ pẹlu ọpọlọpọ awọn apa, ati iwọn didun jẹ agbegbe
ojulumo si ipade lori eyi ti rẹ eiyan (tabi iṣẹ) nṣiṣẹ, ki o ko
o le gbe koodu orisun laisi awọn iṣẹ ṣiṣe eka ti o pẹlu
amuṣiṣẹpọ koodu, awọn ifihan agbara, ati bẹbẹ lọ.
Dipo, a nigbagbogbo fẹ lati ṣẹda aworan kan pẹlu ẹya kan pato ti koodu rẹ.
O jẹ aṣa lati samisi pẹlu aami ti o yẹ (o le lo itumọ-ọrọ
ti ikede tabi eto miiran ni lakaye rẹ).
Iṣeto ni idojuk
Fi fun awọn iyatọ ati pe awọn igbẹkẹle rẹ le yatọ ni awọn oju iṣẹlẹ
idagbasoke ati iṣelọpọ, o han gbangba pe a yoo nilo awọn faili iṣeto ni oriṣiriṣi.
Docker ṣajọ ṣe atilẹyin iṣakojọpọ awọn faili akojọpọ oriṣiriṣi si
gba ik iṣeto ni. Bii eyi ṣe n ṣiṣẹ ni a le rii ninu apẹẹrẹ:
$ 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
Gẹgẹbi a ti sọ, docker ṣajọ awọn atilẹyin apapọ ọpọlọpọ awọn akopọ -
awọn faili, eyi ngbanilaaye lati fagilee ọpọlọpọ awọn paramita ninu faili keji. Fun apere:
$ 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
Sintasi yii ko rọrun pupọ lakoko idagbasoke, nigbati aṣẹ naa
yoo nilo lati ṣee ṣe ni ọpọlọpọ igba.
Ni Oriire, docker compose laifọwọyi n wa faili pataki kan ti a pe
docker-compose.override.yml lati idojuk awọn iye docker-compose.yml... Ti o ba ti a
tun lorukọ faili keji, o gba abajade kanna, lilo aṣẹ atilẹba nikan:
$ 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
O dara, iyẹn rọrun lati ranti.
Interpolation ti Oniyipada
Awọn faili iṣeto ni atilẹyin
oniyipada
services:
my-service:
build:
context: .
image: private.registry.mine/my-stack/my-service:${MY_SERVICE_VERSION:-latest}
...
Ati pe ti o ba ṣe docker-kọ kọ (tabi titari) lai oniyipada ayika
$MY_SERVICE_VERSION, iye yoo ṣee lo titunṣugbọn ti o ba ṣeto
iye oniyipada ayika ṣaaju ki o to kọ, yoo ṣee lo nigbati o ba kọ tabi titari
si iforukọsilẹ ikọkọ.registry.mi.
Awọn ilana mi
Awọn ọna ti o ṣiṣẹ fun mi le ṣiṣẹ fun ọ paapaa. Mo tẹle awọn wọnyi
Awọn ofin ti o rọrun:
- Gbogbo awọn akopọ mi fun iṣelọpọ, idagbasoke (tabi awọn agbegbe miiran) ni asọye nipasẹ
docker-kọ awọn faili - Awọn faili atunto nilo lati bo gbogbo awọn agbegbe mi, bi o ti ṣee ṣe
yago fun išẹpo. - Mo nilo aṣẹ kan ti o rọrun lati ṣiṣẹ ni agbegbe kọọkan.
- Iṣeto akọkọ jẹ asọye ninu faili naa docker-compose.yml.
- Awọn oniyipada ayika ni a lo lati ṣalaye awọn afi aworan tabi omiiran
awọn oniyipada ti o le yatọ lati agbegbe si agbegbe (ipese, isọpọ,
iṣelọpọ). - Awọn iye ti awọn oniyipada iṣelọpọ ni a lo bi awọn iye fun
nipa aiyipada, yi minimizes awọn ewu ti o ba ti akopọ ti wa ni se igbekale ni gbóògì lai
ṣeto ayika oniyipada. - Lati bẹrẹ iṣẹ kan ni agbegbe iṣelọpọ, lo aṣẹ naa docker stack deploy - compose-file docker-compose.yml -with-registry-auth my-stack-name.
- Ayika iṣẹ bẹrẹ ni lilo aṣẹ naa docker-ṣajọ soke -d.
Jẹ ki a wo apẹẹrẹ ti o rọrun.
# 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
...
Mo le lo docker-compose (docker-compose soke)lati ṣiṣe awọn akopọ ni
ipo idagbasoke pẹlu koodu orisun ti a gbe sinu /ise agbese/src.
Mo le lo awọn faili kanna ni iṣelọpọ! Ati pe Mo le dajudaju lo
kanna faili docker-compose.yml fun iṣeto. Lati faagun eyi si
gbóògì, Mo ti o kan nilo a Kọ ki o si fi awọn aworan pẹlu kan telẹ tag
ni ipele CI:
export MY_SERVICE_VERSION=1.2.3
docker-compose -f docker-compose.yml build
docker-compose -f docker-compose.yml push
Ni iṣelọpọ, eyi le ṣee ṣiṣẹ nipa lilo awọn aṣẹ wọnyi:
export MY_SERVICE_VERSION=1.2.3
docker stack deploy my-stack --compose-file docker-compose.yml --with-registry-auth
Ati pe ti o ba fẹ ṣe kanna lori ipele, o kan nilo lati ṣalaye
awọn oniyipada ayika ti o yẹ fun ṣiṣẹ ni agbegbe iṣeto:
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
Bi abajade, a lo awọn faili oriṣiriṣi meji docker-compose, eyiti laisi
Awọn atunto pidánpidán le ṣee lo fun eyikeyi agbegbe ti o ni!
Kọ ẹkọ diẹ sii nipa ẹkọ naa
orisun: www.habr.com