fix(lab-04): align storage lab with compose workflow
This commit is contained in:
@@ -4,12 +4,18 @@ Configura Docker Volumes e MinIO per storage S3-compatible.
|
|||||||
|
|
||||||
## Avvio del Laboratorio
|
## 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
|
```bash
|
||||||
cd labs/lab-04-storage
|
cd labs/lab-04-storage
|
||||||
docker build .
|
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Ordine Consigliato
|
||||||
|
|
||||||
|
1. `tutorial/01-docker-volumes.md`
|
||||||
|
2. `tutorial/02-minio-s3.md`
|
||||||
|
|
||||||
## Verifica Completamento
|
## Verifica Completamento
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -21,4 +27,4 @@ bash tests/99-final-verification.sh
|
|||||||
- [Tutorial](tutorial/) - Guida passo-passo
|
- [Tutorial](tutorial/) - Guida passo-passo
|
||||||
- [How-to Guides](how-to-guides/) - Procedure specifiche
|
- [How-to Guides](how-to-guides/) - Procedure specifiche
|
||||||
- [Reference](reference/) - Documentazione tecnica
|
- [Reference](reference/) - Documentazione tecnica
|
||||||
- [Explanation](explanation/) - Paralleli cloud
|
- [Explanation](explanation/) - Paralleli cloud
|
||||||
|
|||||||
@@ -5,25 +5,43 @@ cd "$(dirname "$0")/.."
|
|||||||
pass=0; fail=0
|
pass=0; fail=0
|
||||||
check() { if eval "$1"; then echo "✓ $2"; ((pass++)); else echo "✗ $2"; ((fail++)); fi; }
|
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
|
# Infrastructure checks
|
||||||
check "[[ -f docker-compose.yml ]]" "docker-compose.yml exists"
|
check "[[ -f docker-compose.yml ]]" "docker-compose.yml exists"
|
||||||
check "docker compose config &>/dev/null" "Syntax valid"
|
check "docker compose config &>/dev/null" "Syntax valid"
|
||||||
|
|
||||||
# Start services
|
# Start services
|
||||||
|
docker compose down >/dev/null 2>&1 || true
|
||||||
docker compose up -d && sleep 8
|
docker compose up -d && sleep 8
|
||||||
|
|
||||||
# Volume checks
|
# Volume checks
|
||||||
VOLUMES=$(docker volume ls --format '{{.Name}}' | grep -E "lab04|minio-data|db-data|test-data" | wc -l)
|
VOLUMES=$(docker volume ls --format '{{.Name}}' | grep -E '^lab-04-storage_(minio-data|db-data|test-data)$' | wc -l)
|
||||||
check "[[ $VOLUMES -ge 3 ]]" "Named volumes created ($VOLUMES)"
|
check "[[ $VOLUMES -eq 3 ]]" "Named volumes created ($VOLUMES/3)"
|
||||||
|
|
||||||
# MinIO checks
|
# 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:9000/minio/health/live" "MinIO API accessible"
|
||||||
check "curl -sf http://127.0.0.1:9001 &>/dev/null" "MinIO console 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 exec lab04-test sh -c "echo test > /test/file.txt"
|
||||||
docker compose restart test && sleep 3
|
docker compose restart test && sleep 3
|
||||||
check "docker exec lab04-test cat /test/file.txt | grep -q test" "Data persists after restart"
|
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"
|
echo "Passed: $pass, Failed: $fail"
|
||||||
[[ $fail -eq 0 ]] && exit 0 || exit 1
|
[[ $fail -eq 0 ]] && exit 0 || exit 1
|
||||||
|
|||||||
@@ -42,13 +42,15 @@ services:
|
|||||||
|
|
||||||
3. Verifica persistenza:
|
3. Verifica persistenza:
|
||||||
```bash
|
```bash
|
||||||
|
cd labs/lab-04-storage
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
docker exec lab04-test sh -c "echo 'test' > /data/file.txt"
|
docker exec lab04-test sh -c "echo 'test' > /test/file.txt"
|
||||||
docker compose down
|
docker compose restart test
|
||||||
docker compose up -d
|
docker exec lab04-test cat /test/file.txt # Dato presente!
|
||||||
docker exec lab04-test cat /data/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
|
## Comandi Utili
|
||||||
```bash
|
```bash
|
||||||
docker volume ls # Lista volumi
|
docker volume ls # Lista volumi
|
||||||
|
|||||||
@@ -32,18 +32,32 @@ minio:
|
|||||||
MINIO_ROOT_USER: minioadmin
|
MINIO_ROOT_USER: minioadmin
|
||||||
MINIO_ROOT_PASSWORD: minioadmin123
|
MINIO_ROOT_PASSWORD: minioadmin123
|
||||||
ports:
|
ports:
|
||||||
- "9000:9000" # API
|
- "127.0.0.1:9000:9000" # API
|
||||||
- "9001:9001" # Console
|
- "127.0.0.1:9001:9001" # Console
|
||||||
volumes:
|
volumes:
|
||||||
- minio-data:/data
|
- 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
|
## Utilizzo
|
||||||
|
|
||||||
### Accesso Console
|
### Accesso Console
|
||||||
Apri: http://localhost:9001
|
Apri: http://localhost:9001
|
||||||
Login: minioadmin / minioadmin123
|
Login: minioadmin / minioadmin123
|
||||||
|
|
||||||
|
### Verifica Health Endpoint
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl http://127.0.0.1:9000/minio/health/live
|
||||||
|
```
|
||||||
|
|
||||||
### AWS CLI
|
### AWS CLI
|
||||||
```bash
|
```bash
|
||||||
aws s3 ls --endpoint-url http://localhost:9000
|
aws s3 ls --endpoint-url http://localhost:9000
|
||||||
|
|||||||
Reference in New Issue
Block a user