From cf9eeb18ca9d1fb20d45a23c241240b2c406068d Mon Sep 17 00:00:00 2001 From: dado Date: Mon, 28 Jul 2025 21:01:39 +0200 Subject: [PATCH] variabili d'ambiante e restart policy --- docker/009-compose.md | 46 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/docker/009-compose.md b/docker/009-compose.md index 692c923..a3decde 100644 --- a/docker/009-compose.md +++ b/docker/009-compose.md @@ -34,3 +34,49 @@ Nell'esempio fornito, il container di nginx dipende da quello di php. Di consegu ## 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`. + +## Variabili d'ambiente + +```yml +services: + php: + image: 'morrolinux/myphp' + container_name: ${APP_NAME:?err}-php + volumes: + - './app:/var/www/html' + + nginx: + image: 'nginx:latest' + container_name: ${APP_NAME:?err}-nginx + ports: + - '8081:80' + - '8443:443' + volumes: + - './app:/var/www/html' + - './config/nginx:/etc/nginx/conf.d' + + mariadb: + image: 'mariadb:latest' + container_name: ${APP_NAME:?err}-mariadb + restart: 'on-failure' + environment: + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:?err} +``` + +La sintassi `${}` viene utilizzata per indicare le variabili d'ambiente nel file `docker-compose.yml`. In particolare, nel caso in cui la variabile `APP_NAME` non venga valorizzata, Docker Compose mostrerà un errore. Questa variabile sarà valorizzata all'interno del file `.env`. + +L'utilizzo del file `.env` permette di separare i dati, anche quelli sensibili, dalla configurazione vera e propria, risultando in un file compose pulito, generico e riutilizzabile. + +Inoltre, il parametro `environment` serve a impostare delle variabili d'ambiente che saranno esportate all'interno del container, rendendole disponibili e utilizzabili dal servizio. + +## Restart policy + +La politica di riavvio definisce le condizioni in cui un container deve essere riavviato dopo un arresto o un riavvio del servizio Docker. Per impostazione predefinita, non è presente alcuna politica di restart; pertanto, se il demone Docker viene arrestato e successivamente riavviato, il container non riprenderà automaticamente l'esecuzione. + +Le politiche di riavvio disponibili sono: + +- `on-failure`: questa opzione indica che il container verrà riavviato automaticamente solo se termina con un errore +- `always`: se questa politica è impostata, il container verrà riavviato indipendentemente dal motivo per cui è terminato, a meno che non venga arrestato manualmente. In questo caso, il container riprenderà l'esecuzione automaticamente al successivo riavvio del demone Docker, magari seguito del riavvio del sistema +- `unless-stopped`: questa opzione mantiene l'ultimo stato del container. Se il container è stato arrestato manualmente, non verrà riavviato, anche dopo un riavvio del demone. Tuttavia, se il container era in esecuzione prima dell'arresto del demone, riprenderà automaticamente l'esecuzione + +Le politiche di riavvio possono essere configurate sia tramite la riga di comando, utilizzando l'opzione `--restart`, ad esempio `docker run --restart always redis`, sia nel file `docker-compose.yml` attraverso l'apposita direttiva di configurazione `restart`.