# Compose `Docker Compose` è uno strumento di orchestrazione per Docker che permette di definire e eseguire applicazioni multi-container utilizzando un singolo file YAML, chiamato `docker-compose.yml`. Questo file contiene tutte le informazioni necessarie per configurare e avviare tutti i servizi dello stack applicativo, incluse le reti e i volumi. Facilita l'avvio, l'arresto e la gestione dei container. Come si vede dall'esempio, vi é una corrispondenza 1:1 tra i parametri della linea di comando e il file di configurazione: ```yml services: php: image: 'php:8.1-fpm' container_name: php volumes: - './app:/var/www/html' nginx: image: 'nginx:latest' container_name: nginx ports: - 8080:80 - 8443:443 volumes: - './app:/var/www/html:ro' - './config/nginx:/etc/nginx/conf.d' depends_on: - php ``` È importante notare che tutti i servizi definiti nello stesso file `docker-compose.yml` sono automaticamente collocati nella stessa rete. Questo consente loro di comunicare tra loro senza la necessità di aprire porte specifiche. Nell'esempio fornito, il container di nginx dipende da quello di php. Di conseguenza, nginx verrà avviato dopo php, garantendo che le dipendenze siano rispettate. ## Gestione dello Stack Per avviare lo stack Docker, è sufficiente eseguire il comando `docker compose up -d` dalla stessa directory in cui si trova il file docker-compose.yml. Per arrestare i container, utilizzare invece `docker compose down`.