services:
  db:
    image: ${POSTGRES_IMAGE:-postgres:16-alpine}
    container_name: ss_tools_db
    restart: unless-stopped
    environment:
      POSTGRES_DB: ss_tools
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    ports:
      - "${POSTGRES_HOST_PORT:-5432}:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres -d ss_tools"]
      interval: 10s
      timeout: 5s
      retries: 10

  backend:
    build:
      context: .
      dockerfile: docker/backend.Dockerfile
    container_name: ss_tools_backend
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    environment:
      POSTGRES_URL: postgresql+psycopg2://postgres:postgres@db:5432/ss_tools
      DATABASE_URL: postgresql+psycopg2://postgres:postgres@db:5432/ss_tools
      TASKS_DATABASE_URL: postgresql+psycopg2://postgres:postgres@db:5432/ss_tools
      AUTH_DATABASE_URL: postgresql+psycopg2://postgres:postgres@db:5432/ss_tools
      BACKEND_PORT: 8000
    ports:
      - "${BACKEND_HOST_PORT:-8001}:8000"
    volumes:
      - ./config.json:/app/config.json
      - ../ss-tools-storage:/home/busya/dev/ss-tools-storage
      - ./backups:/app/backups
      - ./backend/git_repos:/app/backend/git_repos

  frontend:
    build:
      context: .
      dockerfile: docker/frontend.Dockerfile
    container_name: ss_tools_frontend
    restart: unless-stopped
    depends_on:
      - backend
    ports:
      - "${FRONTEND_HOST_PORT:-8000}:80"

volumes:
  postgres_data:
