Umhlahlandlela ophelele wokusebenzisa izinhlelo zokusebenza nge-Docker Compose

Isibuyekezo sokugcina: 13/01/2026
Author: Isaka
  • I-Docker Compose ikuvumela ukuthi uchaze futhi uhlele izinhlelo zokusebenza ezinamakhonteyina amaningi usebenzisa ifayela le-YAML, okwenza kube lula ukuthunyelwa okuyinkimbinkimbi.
  • Izinsizakalo, amanethiwekhi, kanye namavolumu kuchazwa ngendlela ecacile, okwenza kube lula ukuqhubeka kwedatha kanye nokuxhumana kwangaphakathi okuphephile.
  • Imiyalo njengokuphezulu, phansi, izingodo, ukuphatha kanye nokwakha kuhlanganisa umjikelezo wokuphila wamaphrojekthi aphethwe nge-Compose.
  • Ifayela elilodwa le-docker-compose.yml lenza ukuthunyelwa kuphinde kukhiqizwe kokubili endaweni kanye nakumaseva amafu noma i-VPS ephethwe nge-console noma i-Portainer.

Ukusebenzisa izinhlelo zokusebenza nge-Docker Compose

Ukusebenza ngeziqukathi sekuyinto evamile cishe kuwo wonke amaqembu okuthuthukisa, futhi lapho uhlelo lokusebenza ludlula isevisi elula futhi luqala ukufaka isizindalwazi, i-cache, i-frontend, kanye nezinye izinsizakalo ezincane, ukuphatha konke lokho ngesandla kuba yikhanda elibuhlungu langempela. Yilapho i-Docker Compose ingena khona, ithuluzi eliklanywe ngokunembile ukuze ungadingi ukuqala isiqukathi ngasinye ngokwaso, ulungiselele amanethiwekhi ngesandla, noma ukhumbule yonke imiyalo emide.

Umgomo walesi sihloko ukuthi ufunde ukuthi ungawasebenzisa kanjani ama-application aphelele nge-Docker Compose , kokubili endaweni kanye nakumaseva, ngokuqonda ngokugcwele ukuthi ingxenye ngayinye yefayela le-docker-compose.yml isebenza kanjani, ukuthi izinsizakalo, amavolumu, kanye namanethiwekhi asebenza kanjani, ukuthi yimiphi imiyalo oyidingayo emsebenzini wakho wansuku zonke, nokuthi konke lokhu kuhambisana kanjani nomongo wezwe langempela nohlelo lokusebenza lwe-Node.js kanye nedathabheyisi. Uma uvela ekuthuthukisweni okumsulwa (i-frontend, iselula, i-backend) kanye nemibono efana nokuhlelwa noma imisebenzi izwakala sengathi i-gibberish, ungakhathazeki: sizohamba igxathu negxathu, kodwa ngaphandle kokweqa imininingwane.

Izidingo eziyisisekelo zemvelo

Ngaphambi kokuthi siqale ukusebenzisa noma yini, udinga uhlelo lwesisekelo olungalungiselelwanga kahle . Indawo evamile, evame ukusetshenziswa emisebenzini kanye namaphrojekthi amancane okukhiqiza, ingase ibukeke kanje:

  • Ubuntu 20.04 njengohlelo lokusebenza lweseva noma umshini wendawo.
  • I-Docker 20.10.x ifakiwe futhi iyasebenza (i-daemon iyasebenza).
  • I-Docker Compose 1.29.x noma ngaphezulu ukuphatha amaphrojekthi anamakhonteyina amaningi.
  • I-Node.js 18.x y I-NPM 8.x uma uzokwakha izithombe kusuka kuhlelo lokusebenza lwe-Node.

Akuphoqelekile ukusebenzisa lezi zinguqulo eziqondile , kodwa ukuba nokuthile okufanayo nokusha kakhulu kuyanconywa. Kumaseva amafu afana ne-VPS ( i-Google Cloud, i-AWS, i-Arsys, njll.), umkhuba ojwayelekile ukusetha i -Linux VM , ukufaka i-Docker, bese ufaka i-Docker Compose phezu kwalokho.

Iyini i-Docker futhi ixazulula ini i-Docker Compose?

Imiqondo ye-Docker ne-Compose

I-Docker iyipulatifomu yokupakisha nokusebenzisa izinhlelo zokusebenza ezitsheni ezihlukanisiwe . Isitsha ngasinye sihlanganisa kuphela lokho okudingekayo ukuze kuqhutshwe inqubo yakho (ama-binary, amalabhulali, isikhathi sokusebenza, njll.), ukwabelana nge-kernel ne-host kodwa ngaphandle kokuphazamisa ezinye izinsizakalo. Isusa inkinga yakudala ethi "isebenza emshinini wami" futhi ikuvumela ukuthi uhambise uhlelo lwakho lokusebenza phakathi kwemishini ehlukene ngaphandle kokuphazamiseka.

Ngakolunye uhlangothi, i-Docker Compose iyithuluzi elihlela izitsha eziningi njengokungathi ziyi-application eyodwa . Uma unesevisi elula kuphela, ubungaphatha nge-docker run, kodwa ngokushesha nje lapho udinga:

  • Un ngaphambili (I-Angular, i-React, i-Vue…)
  • Un i-backend (I-Node.js, i-Java, i-Python…)
  • Una database (MySQL, PostgreSQL, MongoDB…)
  • Mhlawumbe uhlelo lwe-cache Uhlobo lwe-Redis

Ukuphatha konke lokhu okuqukethe ngesitsha kuba yinto engasebenzi . Ukubhala kukuvumela ukuthi uchaze "isitaki" sonke kufayela elilodwa le-YAML, usho ukuthi yiziphi izinsizakalo ezikhona, ukuthi zixhuma kanjani, yiziphi izimbobo ezizivezayo, yiziphi ivolumu ezizisebenzisayo, nokuthi yiziphi iziguquguquko zemvelo abazidingayo.

Lelo fayela livame ukubizwa ngokuthi i-docker-compose.yml , yize lingabizwa ngokuthile okunye uma ulichaza nge--f lapho usebenzisa imiyalo. Lisebenza njengeresiphi: noma ubani one-Docker kanye ne-Docker Compose angaphinda ingqalasizinda efanayo yesitsha emshinini noma kuseva yakhe.

Ukufaka i-Docker Compose ezinhlelweni ezahlukene

Faka i-Docker Compose

Okuwukuphela kwesidingo sokufaka i-Docker Compose ukuthi i-Docker isebenze . Ukusuka lapho, inqubo iyahlukahluka kancane kuye ngohlelo lokusebenza:

Ukufakwa ku-Linux (isibonelo Ubuntu)

Ekusabalalisweni okufana ne-Ubuntu, ungafaka i-Docker Compose ngokulanda i-binary esemthethweni bese uyinika izimvume zokusebenzisa. Iphethini ejwayelekile yile:

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" \
  -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

Uma lokhu sekuqediwe, sebenzisa i-docker-compose --version ukuqinisekisa ukuthi umyalo uyatholakala futhi uphendula ngenguqulo efanele.

Ukufaka ku-macOS

Ku -Mac, indlela elula ngokuvamile ukufaka i-Docker Desktop , esevele ifaka i-Docker Engine kanye ne-Docker Compose. Ngaphandle kwalokho, onjiniyela abaningi basebenzisa i-Homebrew.

brew install docker-compose

Nge-Docker Desktop ngeke usakhathazeka ngezinto ezibhaliwe , ngoba iphakheji ngokwayo inakekela ukuyigcina isesikhathini kanye nenjini ye-Docker.

Ukufaka ku-Windows

Ku -Windows, inketho ewusizo kakhulu ukusebenzisa i-Docker Desktop ye-Windows . Landa isifaki kuwebhusayithi esemthethweni ye-Docker, uyiqalise, bese ulandela i-wizard. Lokhu kuzokwenza i-Docker ne-Compose zilungele kokubili ku -PowerShell noma ku-WSL2.

Nakuba i-Docker ingasetshenziswa ngokomdabu ku-Windows , ezindaweni zokuthuthukiswa ezingathi sína ngokuvamile kunconywa ukusebenzisa i-WSL2 nge-distro ye-Linux noma ngqo i-Linux VM ekude, lapho i-Docker ne-Compose zisebenza eduze kokukhiqiza.

Isakhiwo esiyisisekelo se-docker-compose.yml

Isakhiwo sefayela le-Docker Compose

Ngaphakathi kwefayela le-docker-compose.yml, singachaza amabhlogo amaningana amakhulu : inguqulo yefomethi, amasevisi, amavolumu, amanethiwekhi, futhi, kwezinye izimo, ukucushwa okwengeziwe. Amasevisi abalulekile ekusetshenzisweni kohlelo lokusebenza olujwayelekile, futhi amavolumu namanethiwekhi abalulekile uma udinga ukuphikelela.

  Ukuthuthukiswa kwe-COSMIC Desktop 1.0.8 ku-terminal, i-Wi-Fi kanye nokusebenziseka kalula

Izinsizakalo: inhliziyo yohlelo lokusebenza

Isevisi ngayinye kufayela Lokubhala ivame ukufana nesitsha (noma iqembu lezitsha) elihlinzeka ngocezu lohlelo lokusebenza . Isibonelo, isevisi yewebhu, isevisi yedathabheyisi, isevisi yokulondoloza isikhashana, njll. Incazelo yesevisi ngayinye isekela inani lezakhiwo, okuhlanganisa:

  • isithombe: Isithombe se-Docker esizosetshenziselwa isitsha (isibonelo, nginx:latest, postgres:15, node:18…).
  • igama_lesitsha: Igama lesitsha elicacile (ongakukhetha; uma lingachazwanga, ukuqamba kudala elilodwa).
  • ukwakha: indlela eya kufolda lapho i-Dockerfile itholakala khona ukuze kwakhiwe isithombe uma singekho noma sifuna esenzelwe wena.
  • umyalo: umyalo ozokwenziwa lapho isitsha siqala (ubhala ngaphezulu kwe I-CMD (kusukela esithombeni).
  • emachwebeni: imephu yembobo ngefomethi ye-host:container, isibonelo "80:80" noma "3030:3030".
  • imiqulu: izikhonkwane zevolumu (eziqanjwe ngamavolumu, izikhonkwane zokubopha, njll.).
  • imvelo: izinguquko zemvelo ezifakwa esitsheni.
  • Incike kakhulu kwi: kubonisa ukuncika phakathi kwezinsizakalo, ukuze ezinye ziqale ngaphambi kwezinye.
  • amanethiwekhiAmanethiwekhi e-Docker lapho isevisi ixhuma khona.
  • Qala kabusha: inqubomgomo yokuqalisa kabusha (cha, njalo, uma yehluleka, ngaphandle kokuthi imiswe).

Into ethakazelisayo ukuthi eziningi zalezi zakhiwo zingakhethwa . Ungachaza isevisi usebenzisa `isithombe` kuphela, futhi i-Compose izokwazi kakade ukuqala isitsha ngamanani azenzakalelayo. Ngemuva kwalokho, njengoba kudingeka, ungalungisa kahle ama-port, amanethiwekhi, iziguquguquko, njll.

Amavolumu: Ukuqhubeka kwedatha nokwabelana

Amavolumu ku-Docker ayindlela ejwayelekile yokuqhubeka kwedatha nokwabelana ngayo phakathi kweziqukathi noma ne-host . Ku-Compose, ngokuvamile amenyezelwa esigabeni "samavolumu" ezingeni lempande bese ebhekiselwa kumasevisi.

Ivolumu ingaba nezakhiwo eziningana ezifanele :

  • Umshayeli: uhlobo lomshayeli wevolumu (okuzenzakalelayo, okwendawo).
  • izinketho_zomshayeli: izinketho ezithile zomshayeli, lapho ungacacisa khona:
    • uhlobo: uhlobo lwevolumu ("ivolumu", "bopha", "nfs", njll.).
    • idivayisi: indlela ku-Host ofuna ukuyikhweza, uma kwenzeka i-bind mount.
    • o: izinketho zokufaka (rw, ro, njll.).
  • zangaphandle: uma ivolumu iphathwa ngaphandle (akudaliwe yi-Compose).
  • amalebula: amalebula angahleliwe.
  • Igama: igama levolumu, uma ufuna ukulenza ngokwezifiso.
  • ububanzi: ububanzi bevolumu (ngokuvamile bendawo).

Nakuba ungalungiselela imininingwane eminingi, ezimweni eziningi kwanele ukumemezela igama levolumu bese ulisebenzisa kusevisi. Isibonelo, kusizindalwazi se-MySQL noma se-PostgreSQL, kuvamile ukuba nevolumu yedatha futhi, ngezinye izikhathi, i-bind mount yezikripthi zokuqalisa.

Amanethiwekhi: ukuxhumana phakathi kweziqukathi

Uma uhlelo lokusebenza lunamamojula amaningi, kuvamile ukufuna ukuhlukanisa ithrafikhi yalo kunethiwekhi yangaphakathi ukuze i-frontend ne-backend, noma i-backend ne-database, zikwazi ukubonana kuphela futhi zingavezwa ngokungalawuleki kumphathi.

I-Docker isebenzisa amanethiwekhi ngemodeli ephefumulelwe ngezingqimba ezintathu :

  • Isiphetho: isikhombikubona esibonakalayo esixhumanisa isitsha nenethiwekhi.
  • I-Sandbox: isikhala senethiwekhi esihlukanisiwe sesitsha (isitaki saso se-TCP/IP).
  • Network: inethiwekhi exhumanisa ama-sandbox ahlukene ngama-endpoints.

Phakathi kwabashayeli benethiwekhi abavame kakhulu ku-Docker sinabo :

Driver I-ambit Descripción
bridge Local Kuyinethiwekhi ezenzakalelayo kuma-Docker host amaningi, okudala ibhuloho elibonakalayo ku-host futhi kuxhumanisa izitsha komunye nomunye.
Bamba Local Khubaza ukuhlukaniswa kwenethiwekhi: isitsha sabelana ngenethiwekhi yomsingathi ngqo.
ukuguqa Global Ikuvumela ukuthi uxhume izitsha ezisebenza kuma-Docker host ahlukene ngaphakathi kweqembu.
i-macvlan Global Nikeza ikheli le-MAC esitsheni njengokungathi liyidivayisi ebonakalayo kunethiwekhi.
none Local Ngaphandle kokuxhumeka kwenethiwekhi okulawulwa yi-Docker, ezimweni ezithile kakhulu.

Ku-Compose, amanethiwekhi achazwa esigabeni "samanethiwekhi" , lapho ukhetha khona umshayeli kanye nezinketho. Uma ungachazi lutho, inethiwekhi yebhuloho ivame ukusetshenziswa ngokuzenzakalelayo. Amasevisi axhuma kula manethiwekhi ngokumane abhale igama encazelweni yawo.

Isibonelo esilula: nginx kanye ne-PostgreSQL ene-Docker Compose

Isibonelo sokusetshenziswa nge-Docker Compose

Ukuze ubonise le mibono, cabanga ukuthi ufuna ukusetha iwebhusayithi elula nge-Nginx kanye nesizindalwazi se-PostgreSQL . Isibonelo esincane se-docker-compose.yml singase sibe nezinsizakalo ezimbili, inethiwekhi yangaphakathi, kanye namavolumu ambalwa:

version: '3.8'

services:
  web:
    image: nginx:latest
    container_name: mi_nginx
    ports:
      - "80:80"
    depends_on:
      - db
    networks:
      - app_net

  db:
    image: postgres:latest
    container_name: mi_postgres
    environment:
      POSTGRES_PASSWORD: ejemplo_password
    volumes:
      - datos_db:/var/lib/postgresql/data
    networks:
      - app_net

volumes:
  datos_db:

networks:
  app_net:
    driver: bridge

Lapha sibona izinto ezimbili ezibaluleke kakhulu : okokuqala, ukuthi i-Nginx iveza i-port 80 kumphathi ngenkathi i-database ifinyeleleka kuphela ngaphakathi kwenethiwekhi ye-app_net, futhi okwesibili, ukuthi idatha ye-PostgreSQL iqhubeka kuvolumu ebizwa ngokuthi i-datos_db. Ngaphezu kwalokho, i-web incike ku-db, ngakho-ke i-Compose izozama ukuqala i-database kuqala.

Ukuncika phakathi kwezinsizakalo ezine-depends_on

Kuhlelo lokusebenza lwangempela, kuvame ukuba nobudlelwano lapho "le nsizakalo ingenamsebenzi ngaphandle kwaleyo ." Isibonelo, i-REST API edinga ukuthi isizindalwazi sisebenze ukuze kuqalwe ukuxhumana, noma i-frontend eqala kuphela lapho i-backend iphendula.

Ku-Docker Compose ungaveza lobu budlelwano ngokhiye depends_on , ubhale izinsizakalo ezincike kuzo le yamanje:

services:
  api:
    image: mi_usuario/mi_api:latest
    depends_on:
      - db

  db:
    image: postgres:15

Ngale ndlela yokucushwa, uma usebenzisa i-`docker-compose up` ngaphandle kokucacisa izinsizakalo , i-Compose izoqala isizindalwazi kuqala, bese kuba yi-API. Nokho, khumbula ukuthi i-`depends_on` ilawula i -oda lokuqalisa , kodwa ayiqinisekisi ukuthi isevisi encike kuyo isivele "ilungile" (isibonelo, ukuthi isizindalwazi siyamukela ukuxhumana). Ezimweni ezibucayi, izikripthi zokulinda noma ukuhlolwa kwezempilo zivame ukusetshenziswa.

  Indlela yokusebenzisa iFirejail ku-Linux ukuhlukanisa nokuvikela izinhlelo zokusebenza

I-Essential Docker Compose Commands

Uma usunefayela lakho le-docker-compose.yml endaweni yalo , ukusetshenziswa kwansuku zonke kwe-Compose kuzungeza imiyalo embalwa ebalulekile. Sizohlala sicabanga ukuthi useluhlwini lapho ifayela litholakala khona, noma ukuthi usebenzisa inketho ethi -f ukukhombisa lokhu.

Qala uhlelo lokusebenza: docker-compose up

Umyalo oyinhloko wokusebenzisa izitsha uthi `docker-compose up` . Uma uyisebenzisa ngaphandle kwamanye amapharamitha, izozama ukwakha izithombe ezidingekayo (uma zinesigaba `sokwakha`) bese iqala zonke izinsizakalo ezichaziwe.

docker-compose up

Uma ufuna ukuthi izitsha zisebenze ngemuva , njengoba kujwayelekile kumaseva, engeza i--d:

docker-compose up -d

Misa iziqukathi: docker-compose down

Ukumisa nokususa izitsha zephrojekthi (yize kungeyona ngempela izithombe noma amavolumu) oyisebenzisayo:

docker-compose down

Ungahlanganisa lo myalo nezinketho ezengeziwe uma ufuna futhi ukususa amavolumu, amanethiwekhi enziwe ngokwezifiso, njll., kodwa ezimweni eziningi, ukusebenzisa nje i-`down` kwanele ukumisa iphrojekthi ngendlela ehlelekile.

Buka isimo sezinsizakalo: docker-compose ps

Uma udinga ukuhlola ukuthi yiziphi izinsizakalo ezisebenzayo, ukuthi imaphi amachweba abekwe kuwo, kanye ne- status yawo , umyalo okufanele uwusebenzise uthi:

docker-compose ps

Lokhu kuzokukhombisa ithebula elineziqukathi eziphethwe yileyo Compose , kufaka phakathi amakholomu egama, isithombe, amachweba, kanye nesimo samanje, okuwusizo kakhulu ekuqinisekiseni ukuthi konke kunjengoba kulindelekile.

Amalogi ombuzo: amalogi okubhala nge-docker

Ukuze ubone ukuthi kwenzekani ngaphakathi kwezinsizakalo zakho, ungasebenzisa i-`docker-compose logs` . Ungabuka amalogi azo zonke izinsizakalo noma aqondene ngqo.

docker-compose logs

# Sólo los logs del servicio "api"
docker-compose logs api

Uma wengeza inketho ethi -f , uzolandelela ngesikhathi sangempela (okufana no-tail -f):

docker-compose logs -f api

Ukufaka isitsha: docker-compose exec

Uma udinga "ukungena ngaphakathi" kwesitsha ukuze ulungise noma usebenzise imiyalo , usebenzisa i-`docker-compose exec`. Isibonelo, ukuvula igobolondo kusevisi ebizwa ngokuthi i-`api`:

docker-compose exec api sh

Ezitsheni ezisuselwe ekusakazweni kwe-bash, ungasebenzisa i-bash esikhundleni se-sh, noma yikuphi okulula kakhulu kuye ngesithombe esiyisisekelo.

Yakha noma wakhe kabusha izithombe: docker-compose build kanye docker-compose pull

Uma ushintshe noma yimaphi ama-Dockerfiles noma ingxenye yomongo wokwakha , kuzodingeka wakhe kabusha izithombe ezihlobene:

docker-compose build
# O bien para un servicio concreto
docker-compose build api

Uma izithombe zivela kurejista ekude (i-Docker Hub, irejista yangasese, njll.) futhi ufuna nje ukulanda inguqulo yakamuva emenyezelwe ku-YAML, usebenzisa:

docker-compose pull

Khumbula ukuthi ungahlala usebenzisa imiyalo "ejwayelekile" ye-Docker (i-docker ps, izithombe ze-docker, i-docker volume ls, i-docker network ls, njll.), kodwa ukuze kulondolozwe ukuvumelana kwephrojekthi kungcono ukusingatha konke okuthinta izinsizakalo ezichazwe ku-docker-compose.yml nge-Compose.

Isibonelo esiphelele: Uhlelo lokusebenza lwe-Node.js + MySQL olune-Docker kanye ne-Docker Compose

Ake sibheke isibonelo esingokoqobo : i-REST API ku-Node.js esebenzisa i-MySQL ukugcina ulwazi (isibonelo, idatha yemoto). Ukugeleza okujwayelekile kungaba:

  1. Thuthukisa i-API kusetshenziswa iziguquguquko zemvelo ukuze kulungiselelwe.
  2. Dala i-Dockerfile ye-API.
  3. Yakha futhi, uma ufuna, layisha isithombe ku-Docker Hub.
  4. Chaza i-docker-compose.yml nge-API kanye nesizindalwazi.
  5. Qala konke futhi usebenze nge-docker-compose up bese uzama uhlelo lokusebenza.

1. I-Node.js API ilungiselelwe iziguquguquko zemvelo

Ake sithi unephrojekthi ye-Node ene-Express eveza amanye ama-endpoints okubuza, ukudala, nokufaka kuhlu izimoto. Isihluthulelo lapha akuyona ikhodi ngokwayo, kodwa kunalokho ukuthi ukucushwa kokuxhumeka kwedathabheyisi kuvela eziguquguquki zemvelo ezifana ne-DB_HOST, DB_USER, DB_PASSWORD, DB_NAME, njll.

Lokhu kubalulekile ekusebenzeni kahle ne-Docker : awufuni ukushisa iziqinisekiso noma ama-URL kukhodi, kodwa kunalokho faka ipharamitha ngesikhathi sokufakwa, kungaba endaweni noma efwini.

2. Ifayela le-Docker lohlelo lokusebenza lwewebhu

Ngaphakathi kwesikhombisi sohlelo lokusebenza, udala i-Dockerfile ezophatha ukwakha isithombe . Isibonelo esiyisisekelo singaba:

FROM node:18-alpine

WORKDIR /usr/src/app

COPY package*.json ./
RUN npm install --only=production

COPY . .

EXPOSE 3000

CMD ["node", "index.js"]

Le Dockerfile iqala ngeNode image esemthethweni , ifaka ukuncika, ikopishe ikhodi, iveze imbobo yohlelo lokusebenza (3000 kulokhu), futhi ichaza umyalo wokuqalisa. Ukusuka lapha, ungakha isithombe endaweni yakini:

docker build -t mi_usuario/mi-api-coches:latest .

Qinisekisa ukuthi isithombe sikhona usebenzisa i-`docker images` , futhi uma konke kusebenza kahle, ungayisebenzisa ngisho naleyo API esitsheni esihlukile usebenzisa i-`docker run`. Kodwa ingxenye ethakazelisayo izofika lapho sihlela ngesizindalwazi sisebenzisa i-Compose.

3. Layisha isithombe kwirekhodi (ongakukhetha kodwa okuwusizo kakhulu)

Uma ufuna ukukwazi ukufaka uhlelo lwakho lokusebenza komunye umshini (i-cloud VM, isibonelo) , kulula kakhulu ukulayisha isithombe ku-Docker Hub noma kwenye irejista. Ukuze wenze lokhu:

docker login
# te pedirá usuario y contraseña

docker push mi_usuario/mi-api-coches:latest

Uma ufuna ukucacisa i-version , ungabhala amalebula ezinguqulweni eziningi:

docker tag mi_usuario/mi-api-coches:latest mi_usuario/mi-api-coches:v1

docker push mi_usuario/mi-api-coches:v1

Kuseva lapho uzosebenzisa khona i- deploy , uzodinga nje ukwenza i- docker pull yesithombe bese uyisebenzisa ku- docker-compose.yml, ngaphandle kokudinga ukuyakha kabusha lapho.

  Indlela yokusebenzisa ama-subvolume e-Btrfs: umhlahlandlela ophelele nosebenzayo

4. Chaza i-docker-compose.yml nge-API kanye ne-MySQL

Isinyathelo esilandelayo ukudala ifayela le-docker-compose.yml elihlanganisa i-API kanye nedathabheyisi , futhi lengeza ivolumu yedatha ye-MySQL kanye, uma kudingeka, iskripthi sokuqalisa :

version: '3.8'

services:
  web:
    image: mi_usuario/mi-api-coches:latest
    container_name: api_coches
    ports:
      - "3000:3000"
    environment:
      DB_HOST: db
      DB_USER: coches_user
      DB_PASSWORD: coches_pass
      DB_NAME: coches_db
    depends_on:
      - db
    networks:
      - coches_net

  db:
    image: mysql:8
    container_name: mysql_coches
    environment:
      MYSQL_ROOT_PASSWORD: root_pass
      MYSQL_DATABASE: coches_db
      MYSQL_USER: coches_user
      MYSQL_PASSWORD: coches_pass
    volumes:
      - datos_mysql:/var/lib/mysql
      - ./initdb:/docker-entrypoint-initdb.d
    ports:
      - "3306:3306"
    networks:
      - coches_net

volumes:
  datos_mysql:

networks:
  coches_net:
    driver: bridge

Kunemininingwane eminingana ethakazelisayo kulokhu kulungiselelwa :

  • I-API ikhomba kudathabheyisi isebenzisa i-DB_HOST=dbokufana negama lesevisi ye-MySQL. I-Docker Compose inikeza i-DNS yangaphakathi, ngakho akudingeki ukhathazeke ngama-IP; vele usebenzise igama lesevisi.
  • Ifolda ethi ./initdb ifakwe ku-/docker-entrypoint-initdb.d esitsheni se-MySQLLokhu kukuvumela ukuthi ufake izikripthi ze-.sql noma ze-.sh ezisebenza ngokuzenzakalelayo ekuqaleni kokuqala (isibonelo, ukudala amathebula, ukufaka idatha yesampula, njll.).
  • Idatha ye-MySQL igcinwa kuvolumu ye-data_mysqlNgakho-ke uma ulahla izitsha nge-docker-compose phansi, ulwazi lwedatha luhlala lungashintshi.
  • Zombili izinsizakalo zabelana ngenethiwekhi ye-coches_net.esebenza njengenethiwekhi yangaphakathi ehlukanisiwe. Ngaphandle uveza kuphela amachweba owafunayo (3000 ye-API, 3306 uma udinga ukufinyelela i-database ungaphandle, okuyinto ngezinye izikhathi engadingeki ngisho).

5. Sebenzisa futhi uhlole uhlelo lokusebenza

Njengoba ifayela le-docker-compose.yml selilungile, ukulisebenzisa kulula njengokuliqalisa kusuka kufolda yefayela:

docker-compose up -d

Isikhathi sokuqala sizothatha isikhathi eside ngoba kufanele ilande izithombe ze-MySQL (kanye ne-API uma ingeyona yendawo), idale ivolumu, bese isebenzisa izikripthi zokuqalisa. Bese, ukuhlola isimo:

docker-compose ps

Uma konke "Kuphezulu", ungaqala ukwenza izicelo ze-API kusuka ku-curl noma ku-Postman. Isibonelo:

# Listar todos los coches
curl http://localhost:3000/coches

# Obtener un coche concreto
curl http://localhost:3000/coches/1

# Crear un coche vía POST
curl -X POST http://localhost:3000/coches \
  -H "Content-Type: application/json" \
  -d '{"marca": "Seat", "modelo": "León"}'

Uma ufuna ukuvala ukufakwa, mane usebenzise i-`docker-compose down` . Uma ungayisusi ivolumu, idatha izogcinwa ukuze iqale kabusha okulandelayo.

Ukusebenzisa i-Docker Compose kumaseva efu kanye ne-Portainer

Konke esikubonile kusebenza ngokulinganayo ekufakeni kukhompyutha yakho ephathekayo njengakuseva yamafu . Umehluko ngokuyisisekelo ukuthi usebenzisaphi imiyalo ye-docker-compose up nokuthi uvula kanjani ama-port emhlabeni wangaphandle.

Indlela elula kakhulu yamaphrojekthi omuntu siqu noma amaphrojekthi aseceleni ukudala i-VM encane (isibonelo, i-e2-micro yamahhala ku-Google Cloud), faka i-Docker kanye ne-Docker Compose, hlanganisa indawo yakho yokugcina ngekhodi kanye ne-docker-compose.yml, bese uqalisa uhlelo lokusebenza lapho.

Ukuphela kwento okudingeka uyikhumbule inqubomgomo yomlilo yomhlinzeki wakho : uma uhlelo lwakho lokusebenza lulalela ku-port 3000, kufanele uvule leyo port kuzilungiselelo zenethiwekhi yomhlinzeki wakho (noma usebenzise i-reverse proxy kuma-port 80/443 uma ufuna ukuvikeleka kakhulu nge-HTTPS). Uma i-port isivuliwe, ungayifinyelela usebenzisa i-http://SERVER_IP:3000 kunoma yisiphi isiphequluli.

Uma ukuphatha izitsha ngomugqa womyalo kuzwakala kunzima, ungasebenzisa i-Portainer , ithuluzi elisebenza futhi esitsheni futhi linikeza isikhombimsebenzisi sewebhu sokuphatha i-Docker (kanye ne-Docker Compose). Ukuze usethe i-Portainer kuseva, ungenza into efana nale:

docker volume create portainer_data

docker run -d \
  -p 8000:8000 -p 9000:9000 \
  --name=portainer \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer

Ngemuva kwalokho uzongena ku-Portainer ku-http://SERVER_IP:9000 , udale umsebenzisi womlawuli bese usuka lapho ubona iziqukathi, ama-Compose stacks, amanethiwekhi, amavolumu, njll., konke kusuka kusiphequluli.

Ukusebenza nge-Docker Compose kukuvumela ukuthi uhlanganise yonke imiklamo yohlelo lokusebenza kufayela elilodwa , okwenza kube lula kunoma yimuphi unjiniyela, kusuka ku-laptop yakhe noma i-VM ekude, ukuthi aqalise isitaki esifanayo ngomyalo owodwa. Ukwengeza imikhuba emihle njengokusebenzisa iziguquguquko zemvelo, amanethiwekhi angaphakathi, amavolumu aqhubekayo, futhi, uma kudingeka, amathuluzi afana ne-Portainer, unesisekelo esiqinile sokusebenzisa konke kusukela kumaphrojekthi amancane omuntu siqu kuya ezindaweni ezingathi sína ngaphandle kokulahleka enkambisweni.