Cum să rulezi aplicații multi-container cu docker compose
In this tutorial, you'll learn about Cum să rulezi aplicații multi. We cover key concepts, practical examples, and best practices.
Vei învăța cum să rulezi și să gestionezi aplicații multi-container cu <a href="/devops/docker-compose/">docker compose</a>, orchestrand mai multe servicii dintr-un singur fișier YAML.
Problema
Rulezi mai multe containere manual cu docker run și trebuie să le conectezi în rețea, să gestionezi volumele și dependențele individual. Acest proces devine greoi și predispus la erori pe măsură ce aplicația crește.
Modul Greșit
docker run -d --name db postgres
docker run -d --name api --link db myapp-api
docker run -d --name frontend -p 3000:3000 myapp-frontend
Fiecare container pornește separat, rețeaua este implicită și nu există o configurare centralizată.
Modul Corect
# docker-compose.yml
version: "3.9"
services:
db:
image: postgres:15
volumes:
- pgdata:/var/lib/postgresql/data
api:
build: ./api
ports:
- "4000:4000"
depends_on:
- db
frontend:
build: ./frontend
ports:
- "3000:3000"
volumes:
pgdata:
docker compose up -d
Output:
[+] Running 4/4
✔ Network default Created
✔ Volume pgdata Created
✔ Container db Started
✔ Container api Started
✔ Container frontend Started
Pași Detaliați
1. Pornește serviciile cu up
Construiește imaginile, creează rețelele și pornește containerele.
docker compose up -d
2. Oprește serviciile cu down
Oprește și elimină containerele, rețelele și volumele specificate.
docker compose down
3. Reconstruiește imaginile cu build
Reconstruiește imaginile înainte de a porni serviciile.
docker compose up --build -d
Sfaturi de Prevenire
- Plasează serviciile care se schimbă rar (baze de date, cache) cu
image:direct, nu cubuild: - Definește rețele custom pentru izolarea serviciilor
- Folosește
depends_onpentru a controla ordinea de pornire - Verifică sintaxa YAML cu
<a href="/devops/docker-compose/">docker compose</a> config
Greșeli Comune
- Versiune de fișier incorectă -- sintaxa diferă între versiunile Docker Compose
- Dependențe ciclice -- serviciile se așteaptă reciproc și nu pornesc
- Volume nepersistente -- datele se pierd dacă volumul nu este declarat la nivel rădăcină
- Porturi conflictuale -- două servicii încearcă să expună același port pe host
- Rețea nedeclarată -- serviciile nu pot comunica între ele
Întrebări Frecvente
Construit de dezvoltatorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu Docker pentru productivitate și securitate sporite.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro