version: "3"

services:
  db:
    image: "postgres:latest"
    volumes:
      - ./postgres_data:/var/lib/postgresql/data

    environment:
      POSTGRES_USER: flaskuser
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_DB: flaskdb

    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U flaskuser -d flaskdb"]
      interval: 5s
      timeout: 5s
      retries: 5
      start_period: 10s

    ports:
      - "5432:5432"
  
  web:
    build: .
    depends_on:
      db:
        condition: service_healthy
    ports:
      - "5001:5001"
    environment:
      - FLASK_ENV=production
      - FLASK_SECRET_KEY=${FLASK_SECRET_KEY}
      - DB_PASSWORD=${DB_PASSWORD}
    volumes:
      - ./instance:/app/instance
    command: sh -c "sleep 2 && flask init-db && gunicorn --bind 0.0.0.0:5001 --workers 4 app:app"
      
      


volumes:
  postgres_data:
