Che cos'è Docker Compose?
Docker Compose è uno strumento progettato specificamente per Docker per definire e gestire applicazioni multi-container, semplificando l'implementazione e la gestione di applicazioni complesse. In termini semplici, consente di descrivere i servizi multipli, le reti e le configurazioni di archiviazione di un'applicazione in un unico file YAML, quindi avviare tutti i servizi con un solo comando. Se si eseguono più applicazioni su UGOS Pro o si desidera semplificare il processo di implementazione, Docker Compose è uno strumento essenziale.
Scenari applicabili
L'utilizzo di Docker Compose su UGOS Pro è tipicamente adatto ai seguenti scenari:
Gestione di applicazioni multiservizio
Se si esegue un'applicazione complessa sul NAS che consiste in più servizi, come un server web, un database, una cache e un proxy inverso, Docker Compose consente di integrare questi servizi in un unico file di configurazione per una gestione e una manutenzione unificate.
-
Esempio: un tipico progetto WordPress potrebbe includere un container WordPress e un container MySQL. Con Compose, è possibile avviare entrambi i servizi contemporaneamente, assicurandosi che le impostazioni di connessione siano configurate correttamente.
Distribuzione semplificata delle applicazioni
Con un file Docker Compose, è possibile definire tutti i servizi, le reti e lo storage necessari per un'applicazione containerizzata. Avviando tutti i servizi definiti con un unico comando, Docker Compose gestisce automaticamente le dipendenze dei servizi, semplificando il processo di distribuzione di applicazioni complesse tramite l'interfaccia Docker.
Portabilità delle applicazioni
Docker Compose consente un'elevata portabilità per le applicazioni containerizzate. È possibile racchiudere l'intera configurazione dell'applicazione in un file Compose e distribuirla rapidamente su diversi dispositivi UGOS Pro, garantendo coerenza ed efficienza.
Struttura del file Docker Compose
I file Docker Compose sono in genere denominati docker-compose.yaml e utilizzano la sintassi YAML per definire servizi, reti e archiviazione. Una struttura di file Compose di base è la seguente:
versione: '3'
servizi:
web:
immagine: nginx
porte:
- "90:80"
volumi:
- ./html:/usr/share/nginx/html
db:
immagine: mysql
ambiente:
MYSQL_ROOT_PASSWORD: esempio
MYSQL_DATABASE: mydatabase
MYSQL_USER: utente
MYSQL_PASSWORD: password
volumi:
- ./data:/var/lib/mysql
-
versione: definisce la versione del file Docker Compose.
-
servizi: specifica i servizi nell'applicazione. In questo esempio,
webedbsono definiti come due servizi. -
immagine: indica l'immagine Docker utilizzata per il servizio, ad esempio
nginxemysql. -
ports: Mappa le porte tra l'host e il container. Ad esempio,
90:80mappa la porta 90 sull'host NAS alla porta 80 nel container, consentendo l'accesso al container tramiteNAS_IP:90. -
volumes: mappa le directory di archiviazione NAS alle directory del contenitore per la persistenza dei dati.
-
environment: Imposta le variabili di ambiente per i servizi all'interno del container, come password del database, chiavi API e altre opzioni di configurazione.

Spiegazione delle variabili di ambiente
In questo esempio:
-
MYSQL_ROOT_PASSWORD: imposta la password root per il database MySQL suexample. -
MYSQL_DATABASE: crea un database denominatomydatabase. -
MYSQL_USER: crea un utente del database denominatouser. -
MYSQL_PASSWORD: imposta la password per l'utente sopra indicato supassword.
Queste variabili di ambiente vengono passate al servizio MySQL durante l'avvio del container e vengono utilizzate per inizializzare il database.
Come funziona il montaggio dei volumi
Nel file Docker Compose, ./html:/usr/share/nginx/html è una configurazione di volume in cui ./ rappresenta la directory in cui si trova il file Docker Compose.
-
./html: In questo contesto,./rappresenta la directory in cui si trova il file Docker Compose. Nello specifico,./htmlsi riferisce a una directory su UGOS Pro, che è la sottodirectoryhtmlnella stessa directory del file Docker Compose. -
/usr/share/nginx/html: si riferisce a una directory all'interno del container. Per i container Nginx, questo è il percorso predefinito per i file statici del sito web.
Con questa configurazione, Docker monta la directory ./html sull'host in /usr/share/nginx/html all'interno del container, consentendo:
-
Il riflesso immediato delle modifiche apportate nella directory
./htmldell'host nella directory/usr/share/nginx/htmldel container . -
La sincronizzazione delle modifiche apportate all'interno del container nella directory
./htmldell'host .
Link correlato: Come specificare correttamente i percorsi di montaggio dei volumi in un file di configurazione Docker Compose?
Come utilizzare Docker Compose su UGOS Pro
Supponiamo che stiate utilizzando un media center domestico su UGREEN NAS. Potete utilizzare Docker Compose per gestire servizi come Jellyfin (media server), MariaDB (database) e Redis (cache). Con un unico filedocker-compose.yml, potete definire le dipendenze, i montaggi dei volumi e le configurazioni di rete per questi servizi e gestire l'intero media center con semplici comandi.
Passaggi per l'utilizzo:
1. Creare un progetto
Apri l'applicazione Docker in UGOS Pro e fai clic su "Progetto" > "Crea" e inserisci i seguenti dettagli:
-
Nome: fornire un nome per il progetto.
-
Percorso di archiviazione: specificare il percorso in cui verrà archiviatoil file di configurazione Docker Compose (
docker-compose.yaml). -
Configurazione Compose: inserire direttamente la configurazione YAML o importare un file
docker-compose.yamlesistente .
2. Impostare PUID e PGID
-
Se necessario, imposta i valori PUID e PGID.
-
Si consiglia di utilizzare l'ID utente e l'ID gruppo dell'utente corrente per evitare problemi di autorizzazione che potrebbero causare errori del container.
3. Distribuire il progetto
-
Dopo aver verificato la configurazione, fare clic su "Distribuisci" per creare il progetto.
Seguendo questi passaggi, è possibile utilizzare Docker Compose per avviare e gestire l'intero media center domestico. Tutti i servizi verranno eseguiti in background con le dipendenze configurate correttamente, garantendo un funzionamento fluido.