From 4b6777f60046da93f271d1083427de4d1e80df91 Mon Sep 17 00:00:00 2001 From: Luca Sacchi Ricciardi Date: Fri, 10 Apr 2026 13:54:33 +0000 Subject: [PATCH] fix(lab-04): align storage lab with compose workflow --- labs/lab-04-storage/README.md | 10 ++++++-- .../tests/99-final-verification.sh | 24 ++++++++++++++++--- .../tutorial/01-docker-volumes.md | 10 ++++---- labs/lab-04-storage/tutorial/02-minio-s3.md | 18 ++++++++++++-- 4 files changed, 51 insertions(+), 11 deletions(-) diff --git a/labs/lab-04-storage/README.md b/labs/lab-04-storage/README.md index 99800a6..b2f7546 100644 --- a/labs/lab-04-storage/README.md +++ b/labs/lab-04-storage/README.md @@ -4,12 +4,18 @@ Configura Docker Volumes e MinIO per storage S3-compatible. ## Avvio del Laboratorio +Leggi prima i tutorial nell'ordine indicato sotto. Questo lab usa direttamente `docker-compose.yml`: non serve alcun `docker build` manuale. + ```bash cd labs/lab-04-storage -docker build . docker compose up -d ``` +## Ordine Consigliato + +1. `tutorial/01-docker-volumes.md` +2. `tutorial/02-minio-s3.md` + ## Verifica Completamento ```bash @@ -21,4 +27,4 @@ bash tests/99-final-verification.sh - [Tutorial](tutorial/) - Guida passo-passo - [How-to Guides](how-to-guides/) - Procedure specifiche - [Reference](reference/) - Documentazione tecnica -- [Explanation](explanation/) - Paralleli cloud \ No newline at end of file +- [Explanation](explanation/) - Paralleli cloud diff --git a/labs/lab-04-storage/tests/99-final-verification.sh b/labs/lab-04-storage/tests/99-final-verification.sh index a855012..4a7430c 100755 --- a/labs/lab-04-storage/tests/99-final-verification.sh +++ b/labs/lab-04-storage/tests/99-final-verification.sh @@ -5,25 +5,43 @@ cd "$(dirname "$0")/.." pass=0; fail=0 check() { if eval "$1"; then echo "✓ $2"; ((pass++)); else echo "✗ $2"; ((fail++)); fi; } +cleanup() { + docker compose down >/dev/null 2>&1 || true +} + +trap cleanup EXIT + # Infrastructure checks check "[[ -f docker-compose.yml ]]" "docker-compose.yml exists" check "docker compose config &>/dev/null" "Syntax valid" # Start services +docker compose down >/dev/null 2>&1 || true docker compose up -d && sleep 8 # Volume checks -VOLUMES=$(docker volume ls --format '{{.Name}}' | grep -E "lab04|minio-data|db-data|test-data" | wc -l) -check "[[ $VOLUMES -ge 3 ]]" "Named volumes created ($VOLUMES)" +VOLUMES=$(docker volume ls --format '{{.Name}}' | grep -E '^lab-04-storage_(minio-data|db-data|test-data)$' | wc -l) +check "[[ $VOLUMES -eq 3 ]]" "Named volumes created ($VOLUMES/3)" # MinIO checks check "curl -sf http://127.0.0.1:9000/minio/health/live" "MinIO API accessible" check "curl -sf http://127.0.0.1:9001 &>/dev/null" "MinIO console accessible" -# Persistence check +# Persistence check - test volume docker exec lab04-test sh -c "echo test > /test/file.txt" docker compose restart test && sleep 3 check "docker exec lab04-test cat /test/file.txt | grep -q test" "Data persists after restart" +# Persistence check - MinIO data volume +docker exec lab04-minio sh -c "mkdir -p /data/tbf && echo ok > /data/tbf/probe.txt" +docker compose restart minio && sleep 5 +check "docker exec lab04-minio sh -c 'cat /data/tbf/probe.txt' | grep -q ok" "MinIO data persists after restart" + +# Persistence check - PostgreSQL data volume +docker exec lab04-db sh -c "psql -U lab04_user -d lab04_db -c \"create table if not exists tbf_probe(msg text); insert into tbf_probe values ('ok');\"" >/dev/null +docker compose restart db && sleep 5 +DB_COUNT=$(docker exec lab04-db sh -c "psql -U lab04_user -d lab04_db -tAc \"select count(*) from tbf_probe where msg='ok';\"" | tr -d '[:space:]') +check "test ${DB_COUNT:-0} -ge 1" "Database data persists after restart" + echo "Passed: $pass, Failed: $fail" [[ $fail -eq 0 ]] && exit 0 || exit 1 diff --git a/labs/lab-04-storage/tutorial/01-docker-volumes.md b/labs/lab-04-storage/tutorial/01-docker-volumes.md index a43a982..85c20a5 100644 --- a/labs/lab-04-storage/tutorial/01-docker-volumes.md +++ b/labs/lab-04-storage/tutorial/01-docker-volumes.md @@ -42,13 +42,15 @@ services: 3. Verifica persistenza: ```bash +cd labs/lab-04-storage docker compose up -d -docker exec lab04-test sh -c "echo 'test' > /data/file.txt" -docker compose down -docker compose up -d -docker exec lab04-test cat /data/file.txt # Dato presente! +docker exec lab04-test sh -c "echo 'test' > /test/file.txt" +docker compose restart test +docker exec lab04-test cat /test/file.txt # Dato presente! ``` +Nota: nel compose reale del lab il container `lab04-test` monta il volume `test-data` su `/test`, non su `/data`. + ## Comandi Utili ```bash docker volume ls # Lista volumi diff --git a/labs/lab-04-storage/tutorial/02-minio-s3.md b/labs/lab-04-storage/tutorial/02-minio-s3.md index ae9a91f..e233f88 100644 --- a/labs/lab-04-storage/tutorial/02-minio-s3.md +++ b/labs/lab-04-storage/tutorial/02-minio-s3.md @@ -32,18 +32,32 @@ minio: MINIO_ROOT_USER: minioadmin MINIO_ROOT_PASSWORD: minioadmin123 ports: - - "9000:9000" # API - - "9001:9001" # Console + - "127.0.0.1:9000:9000" # API + - "127.0.0.1:9001:9001" # Console volumes: - minio-data:/data ``` +Nel repository trovi gia questa configurazione dentro `docker-compose.yml`. Il flusso consigliato e usare quel file direttamente: + +```bash +cd labs/lab-04-storage +docker compose up -d +docker compose ps +``` + ## Utilizzo ### Accesso Console Apri: http://localhost:9001 Login: minioadmin / minioadmin123 +### Verifica Health Endpoint + +```bash +curl http://127.0.0.1:9000/minio/health/live +``` + ### AWS CLI ```bash aws s3 ls --endpoint-url http://localhost:9000