services: db: image: postgres:15-alpine container_name: diary-db restart: unless-stopped environment: POSTGRES_DB: diarydb POSTGRES_USER: diaryuser POSTGRES_PASSWORD: diarypass volumes: - postgres_data:/var/lib/postgresql/data networks: - diary_network healthcheck: test: ["CMD-SHELL", "pg_isready -U diaryuser -d diarydb"] interval: 5s timeout: 5s retries: 10 app: build: . image: diary-app:latest container_name: diary-app restart: unless-stopped environment: DJANGO_SETTINGS_MODULE: diary_app.settings POSTGRES_DB: diarydb POSTGRES_USER: diaryuser POSTGRES_PASSWORD: diarypass DB_HOST: db DB_PORT: "5432" SECRET_KEY: change-me-in-production-use-a-long-random-string DEBUG: "False" volumes: - diary_static:/app/staticfiles networks: - diary_network depends_on: db: condition: service_healthy nginx: image: nginx:alpine container_name: diary-nginx restart: unless-stopped ports: - "80:80" volumes: - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro - diary_static:/app/staticfiles:ro networks: - diary_network depends_on: - app volumes: postgres_data: diary_static: networks: diary_network: driver: bridge