---

services:
  tasknote-web:
    container_name: tasknote-web
    depends_on:
      tasknote-api:
        condition: service_healthy
    image: ghcr.io/rmcampos/tasknote/app:latest
    build:
      context: ./client
      dockerfile: Dockerfile
    ports: ["5000:5000"]
    networks:
      - tasknote-network

  tasknote-api:
    container_name: tasknote-api
    depends_on:
      tasknote-db:
        condition: service_healthy
    environment:
      POSTGRES_DB: tasknote
      POSTGRES_HOST: tasknote-db
      POSTGRES_USER: tasknoteuser
      POSTGRES_PASSWORD: default
      POSTGRES_PORT: 5432
      CORS_ALLOWED_ORIGINS: http://tasknote-web:5000, http://localhost:5000, https://flattop-depth-dropper.ngrok-free.dev
      SERVER_SERVLET_CONTEXT_PATH: /
      TARGET_ENV: production
      SECURITY_KEY: ${SECURITY_KEY:-default-security-key}
      MAILGUN_APIKEY: ${MAILGUN_APIKEY:-default-mailgun-apikey}
    ports: ["8585:8585"]
    image: ghcr.io/rmcampos/tasknote/api:latest
    healthcheck:
      test: ["CMD", "/layers/local_healthcheck/healthcheck/bin/healthcheck"]
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 5s
    networks:
      - tasknote-network

  tasknote-db:
    container_name: tasknote-db
    image: postgres:16
    environment:
      POSTGRES_DB: tasknote
      POSTGRES_USER: tasknoteuser
      POSTGRES_PASSWORD: default
    ports: ["5432:5432"]
    healthcheck:
      test: psql -q -U $${POSTGRES_USER} -d $${POSTGRES_DB} -c 'SELECT 1'
      interval: 1m30s
      timeout: 15s
      retries: 3
      start_period: 10s
    networks:
      - tasknote-network

networks:
  tasknote-network:
    external: true
