Два варианта compose-файла. Какой запустит надёжно?
middle
correct_vs_wrong
#335
Вариант 1
services:
db:
image: postgres:16
# ❌ нет volume — данные потеряются при docker compose down
# ❌ нет healthcheck
# ❌ нет environment
app:
build: .
depends_on:
- db # ❌ просто ordering, не ждёт готовности БД
environment:
DB_HOST: db
ports:
- "8000:8000"
Вариант 2
services:
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: ${POSTGRES_USER:-app}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-app}
POSTGRES_DB: ${POSTGRES_DB:-app}
volumes:
- pg_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-app}"]
interval: 5s
timeout: 3s
retries: 10
app:
build: .
env_file: .env
depends_on:
db:
condition: service_healthy
ports:
- "8000:8000"
restart: unless-stopped
volumes:
pg_data:
Чтобы решить вопрос и сохранить попытку — войди.