Ce face docker compose logs / ps / exec
Când lucrezi cu un proiect Compose, nu este nevoie să reții numele complete ale containerelor (precum proiect-api-1) pentru a folosi docker logs sau docker exec. Subcomenzile din docker compose operează direct cu numele scurt al serviciului din compose.yaml (de exemplu api sau db) și se limitează automat la proiectul din directorul curent.
docker compose ps îți arată doar containerele proiectului curent și starea lor (inclusiv healthy), docker compose logs -f împletește într-un singur flux colorat jurnalele tuturor serviciilor (sau doar pe cele ale serviciilor indicate), iar docker compose exec deschide un shell sau rulează o comandă într-un serviciu care deja rulează.
Dacă serviciul este oprit sau vrei să rulezi o comandă punctuală într-un container nou și separat (de exemplu o migrare de bază de date sau npm test), folosește docker compose run --rm serviciu comandă.
Opțiuni și argumente
| Opțiune / Parametru | Descriere |
|---|---|
ps [-a] |
Listează containerele proiectului curent (cu -a le include și pe cele oprite). |
logs [-f] [--tail N] [serviciu] |
Afișează și urmărește în timp real jurnalele tuturor serviciilor sau doar ale celor numite. |
exec serviciu comandă |
Execută o comandă într-un container pornit al serviciului (în Compose v2, -it este activat automat în terminal). |
run --rm serviciu comandă |
Pornește un container nou, temporar, pentru acel serviciu, rulează comanda și îl șterge la final. |
restart / stop / start [serviciu] |
Repornește, oprește sau pornește unul sau toate serviciile proiectului. |
Exemple
Exemplul 1: Verificarea stării și urmărirea jurnalelor pentru un serviciu
Vedem ce servicii rulează și urmărim ultimele 20 de linii din jurnalul serviciului api.
docker compose ps
docker compose logs -f --tail 20 api
Ieșire în terminal
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
proiect-api-1 proiect-api "docker-entrypoint.s…" api 12 minutes ago Up 12 minutes 0.0.0.0:3000->3000/tcp
proiect-db-1 postgres:16 "docker-entrypoint.s…" db 12 minutes ago Up 12 minutes (healthy) 5432/tcp
api-1 | [08:20:01] Server pornit pe portul 3000
api-1 | [08:20:14] GET /sanatate 200 4ms
Exemplul 2: Deschiderea clientului psql în serviciul db
Nu avem nevoie de -it explicit: docker compose exec alocă automat un terminal interactiv.
docker compose exec db psql -U postgres -d magazin
Ieșire în terminal
psql (16.4 (Debian 16.4-1.pgdg120+1))
Type "help" for help.
magazin=#
Greșeli frecvente
- Rularea comenzilor
docker composedintr-un alt director decât cel în care se aflăcompose.yaml: vei primi eroareano configuration file provided: not found. - Folosirea
docker compose runfără--rmpentru comenzi repetate (teste, migrări): lasă în urmă zeci de containere oprite (proiect-api-run-1,proiect-api-run-2…).
Comenzi înrudite
docker compose up: Construiește imaginile, creează rețeaua și volumele și pornește toate serviciile din compose.yaml.docker compose down: Oprește și șterge containerele și rețeaua create de docker compose up.docker logs: Afișează ieșirea standard (stdout și stderr) a unui container.docker exec: Rulează o comandă suplimentară într-un container care rulează deja.