Docker Compose Opzioni
Docker Compose le opzioni Ports e Scale
Opzioni Docker Compose
In un file `docker-compose.yml`, le opzioni `scale` e `ports` possono essere utilizzate per gestire rispettivamente il numero di istanze di un servizio e le mappature delle porte tra l'host e il container.Tuttavia, è importante notare che la direttiva `scale` è stata rimossa dalle versioni più recenti di Docker Compose e invece viene gestita con il comando `docker-compose up --scale`.
Ecco un esempio di file `docker-compose.yml` che mostra come utilizzare `ports` e come gestire il dimensionamento dei servizi con `docker-compose up --scale`:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
deploy:
replicas: 3
Spiegazione
-
Versione: Definisce la versione del formato del file Docker Compose.
In questo caso, viene utilizzata la versione 3.8. -
Services: Elenca i servizi definiti nel file.
In questo esempio, c'è un solo servizio chiamato `web`. - Image: Specifica l'immagine Docker da utilizzare per il servizio. Qui viene utilizzata l'immagine `nginx:latest`.
- Ports: Mappa la porta 80 del container alla porta 8080 dell'host. In questo modo, è possibile accedere al servizio web esposto dal container tramite `http://localhost:8080`.
-
Deploy: La sezione `deploy` contiene informazioni sulla distribuzione del servizio. La direttiva `replicas` specifica il numero di istanze (repliche) del servizio da eseguire.
Anche se `replicas` è più comunemente usato con Docker Swarm, in Docker Compose possiamo utilizzare un comando per ridimensionare il numero di istanze.
Dimensionamento dei servizi
Per ridimensionare i servizi utilizzando Docker Compose, si può usare il comando che segue
docker-compose up --scale web=3
Questo comando avvia tre istanze del servizio `web` specificato nel file `docker-compose.yml`.
Esempio completo del file docker-compose.yml con più servizi
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
app:
image: myapp:latest
ports:
- "3000:3000"
deploy:
In questo esempio, ci sono due servizi: `web` e `app`.
Il servizio `web` esegue Nginx e mappa la porta 80 del container alla porta 8080 dell'host.
Il servizio `app` esegue un'applicazione personalizzata (ipoteticamente chiamata `myapp`) e mappa la porta 3000 del container alla porta 3000 dell'host, con due repliche.
Per ridimensionare il servizio `app`.
docker-compose up --scale app=2
In sintesi, il file `docker-compose.yml` definisce le configurazioni dei servizi e le mappature delle porte, mentre il comando `docker-compose up --scale` gestisce il dimensionamento delle istanze dei servizi.