Containerele Docker pot fi pornite folosind argumente de linie de comandă, dar pe măsură ce aplicațiile devin mai complexe, gestionarea lor manuală devine dificilă. Docker Compose rezolvă această problemă, permițându-vă să definiți containere, rețele, volume și variabile de mediu într-un singur fișier de configurare YAML.
Un fișier Docker Compose face ca implementarea aplicațiilor să fie mai ușoară, mai consistentă și mai ușor de întreținut.
Cuprins
Exemplu de fișier Docker Compose
servicii:
app:
nume_container: my_container
imagine: ubuntu:latest
porturi:
- "8080:80"
- "443:443"
environment:
MYSQL_ROOT_PASSWORD: my_password
MYSQL_DATABASE: my_database
MYSQL_USER: my_user
MYSQL_PASSWORD: my_database_password
volume:
- ./data:/app/data
comandă: ["npm", "start"]
repornire: mereu
Înțelegerea configurației
container_name
Numele containerului definește modul în care acesta va apărea în Docker.
container_name: my_container
Fără această opțiune, Docker generează automat un nume aleatoriu.
imagine
Imaginea specifică ce imagine Docker trebuie utilizată la crearea containerului.
image: ubuntu:latest
Docker va descărca automat imaginea dacă aceasta nu este deja disponibilă pe server.
porturi
Mapările de porturi permit traficului extern să acceseze serviciile care rulează în interiorul containerului.
porturi:
- "8080:80"
- "443:443"
În acest exemplu:
- Portul 8080 de pe server redirecționează traficul către portul 80 din interiorul containerului.
- Portul 443 de pe server redirecționează traficul către portul 443 din interiorul containerului.
mediu
Variabilele de mediu furnizează valori de configurare aplicațiilor care rulează în interiorul containerului.
mediu:
MYSQL_ROOT_PASSWORD: my_password
MYSQL_DATABASE: my_database
MYSQL_USER: my_user
MYSQL_PASSWORD: my_database_password
Aceste valori sunt utilizate în mod obișnuit de bazele de date, aplicațiile web și alte servicii.
volume
Volumele permit păstrarea datelor chiar și în cazul în care containerul este eliminat și recreat.
volumele:
- ./data:/app/data
În acest exemplu:
./dataeste un director de pe serverul gazdă./app/dataeste directorul din interiorul containerului.
Orice modificare efectuată în oricare dintre aceste locații este sincronizată.
comandă
Opțiunea "comandă" înlocuiește comanda implicită de pornire a imaginii.
comandă: ["npm", "start"]
Când containerul pornește, Docker execută această comandă.
restart
Politica de repornire controlează ce se întâmplă dacă un container se oprește neașteptat.
restart: always
Opțiunile obișnuite includ:
| Politică | Descriere |
|---|---|
| no | Nu se repornește niciodată automat |
| always | Repornirea automată a containerului |
| unless-stopped | Repornire numai dacă a fost oprit manual |
| on-failure | Repornire numai după eșecuri |
Pornirea aplicației
Salvați configurația ca:
docker-compose.yml
Apoi porniți containerul:
docker compose up -d
Opțiunea -d rulează containerul în fundal.
Vizualizarea containerelor care rulează
Pentru a afișa containerele care rulează:
docker ps
Pentru a vizualiza jurnalele aplicației:
docker compose logs
Pentru a opri aplicația:
docker compose down
Exemplu: WordPress cu MariaDB
Docker Compose este adesea utilizat pentru a implementa mai multe servicii împreună.
servicii:
db:
imagine: mariadb:latest
mediu:
MYSQL_ROOT_PASSWORD: strongpassword
MYSQL_DATABASE: wordpress
wordpress:
image: wordpress:latest
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_PASSWORD: strongpassword
Această configurație lansează atât un container WordPress, cât și un container de bază de date MariaDB, care comunică automat între ele.
Rezumat
Docker Compose vă permite să definiți configurațiile containerelor într-un fișier YAML simplu, în loc să gestionați manual comenzi Docker lungi. Acesta simplifică implementarea aplicațiilor prin centralizarea configurațiilor, cum ar fi imaginile, porturile, variabilele de mediu, volumele de stocare și politicile de repornire.
Pentru aplicațiile moderne care utilizează mai multe containere, Docker Compose este unul dintre cele mai utilizate instrumente pentru dezvoltarea locală, testare și medii de producție de dimensiuni mici și medii.