version: "3.9"

services:
  api:
    container_name: api
    image: hexastack/hexabot-api:latest
    env_file: .env
    ports:
      - ${API_PORT}:3000
    networks:
      - db-network
      - app-network
    volumes:
      - api-data:/app/uploads
      - api-avatars-data:/app/avatars
    depends_on:
      mongo:
        condition: service_healthy
    healthcheck:
      test: "wget --spider http://localhost:3000"
      interval: 10s
      timeout: 10s
      retries: 5
      start_period: 10s

  hexabot-frontend:
    container_name: frontend
    image: hexastack/hexabot-ui:latest
    env_file: .env
    ports:
      - ${APP_FRONTEND_PORT}:8080
    networks:
      - app-network
    depends_on:
      api:
        condition: service_healthy

  mongo:
    container_name: mongo
    image: mongo:7.0
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: ${MONGO_USER}
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD}
    networks:
      - db-network
    healthcheck:
      test: echo 'db.stats().ok' | mongosh localhost:27017 --quiet
      interval: 10s
      timeout: 10s
      retries: 5
      start_period: 10s
    volumes:
      - mongo-data:/data/db

volumes:
  mongo-data:
  api-data:
  api-avatars-data:

networks:
  db-network:
  app-network:
