networks:
  nginx-bridge: # Change to network you plan to use
    external: true

services:
  convexmonorepo:
    build:
      context: ../
      dockerfile: ./docker/Dockerfile
    image: ${NEXT_CONTAINER_NAME}:alpine
    container_name: ${NEXT_CONTAINER_NAME}
    environment:
      - NODE_ENV
      - SENTRY_AUTH_TOKEN=${SENTRY_AUTH_TOKEN}
      - NEXT_PUBLIC_SITE_URL=${NEXT_PUBLIC_SITE_URL:-http://localhost:${NEXT_PORT:-3000}}
      - NEXT_PUBLIC_CONVEX_URL=${NEXT_PUBLIC_CONVEX_URL:-http://${BACKEND_CONTAINER_NAME:-convex-backend}:${BACKEND_PORT:-3210}}
      - NEXT_PUBLIC_PLAUSIBLE_URL=${NEXT_PUBLIC_PLAUSIBLE_URL:-https://plausible.gbrown.org}
      - NEXT_PUBLIC_SENTRY_DSN=${NEXT_PUBLIC_SENTRY_DSN}
      - NEXT_PUBLIC_SENTRY_URL=${NEXT_PUBLIC_SENTRY_URL}
      - NEXT_PUBLIC_SENTRY_ORG=${NEXT_PUBLIC_SENTRY_ORG:-sentry}
      - NEXT_PUBLIC_SENTRY_PROJECT_NAME=${NEXT_PUBLIC_SENTRY_PROJECT_NAME}
      - PAYLOAD_SECRET=${PAYLOAD_SECRET}
      - PAYLOAD_DB_URL=${PAYLOAD_DB_URL}
    hostname: ${NEXT_CONTAINER_NAME}
    domainname: ${NEXT_DOMAIN}
    networks: ['${NETWORK:-nginx-bridge}']
    #ports: ['${NEXT_PORT}:${NEXT_PORT}']
    depends_on: ['convexmonorepo-backend']
    tty: true
    stdin_open: true
    restart: unless-stopped

  convexmonorepo-backend:
    image: ghcr.io/get-convex/convex-backend:${BACKEND_TAG:-latest}
    container_name: ${BACKEND_CONTAINER_NAME:-convex-backend}
    hostname: ${BACKEND_CONTAINER_NAME:-convex-backend}
    domainname: ${BACKEND_DOMAIN:-convex.gbrown.org}
    networks: ['${NETWORK:-nginx-bridge}']
    #user: '1000:1000'
    #ports: ['${BACKEND_PORT:-3210}:3210','${SITE_PROXY_PORT:-3211}:3211']
    volumes: [./data:/convex/data]
    labels: ['com.centurylinklabs.watchtower.enable=true']
    environment:
      - INSTANCE_NAME
      #- INSTANCE_SECRET
      - CONVEX_CLOUD_ORIGIN=${CONVEX_CLOUD_ORIGIN:-http://${BACKEND_CONTAINER_NAME:-stpeteit-backend}:${BACKEND_PORT:-3210}}
      - CONVEX_SITE_ORIGIN=${CONVEX_SITE_ORIGIN:-http://${BACKEND_CONTAINER_NAME:-stpeteit-backend}:${SITE_PROXY_PORT:-3211}}
      - DISABLE_BEACON=${DISABLE_BEACON:-true}
      - REDACT_LOGS_TO_CLIENT=${REDACT_LOGS_TO_CLIENT:-true}
      - DO_NOT_REQUIRE_SSL=${DO_NOT_REQUIRE_SSL:-false}
      #- POSTGRES_URL=${POSTGRES_URL}
    stdin_open: true
    tty: true
    restart: unless-stopped
    healthcheck:
      test: curl -f http://localhost:3210/version
      interval: 5s
      start_period: 10s
    stop_grace_period: 10s
    stop_signal: SIGINT

  convexmonorepo-dashboard:
    image: ghcr.io/get-convex/convex-dashboard:${DASHBOARD_TAG:-latest}
    container_name: ${DASHBOARD_CONTAINER_NAME:-convex-dashboard}
    hostname: ${DASHBOARD_CONTAINER_NAME:-convex-dashboard}
    domainname: ${DASHBOARD_DOMAIN:-dashboard.${BACKEND_DOMAIN:-convex.gbrown.org}}
    networks: ['${NETWORK:-nginx-bridge}']
    #user: 1000:1000
    #ports: ['${DASHBOARD_PORT:-6791}:6791']
    labels: ['com.centurylinklabs.watchtower.enable=true']
    environment:
      - NEXT_PUBLIC_DEPLOYMENT_URL=${NEXT_PUBLIC_DEPLOYMENT_URL:-http://${BACKEND_CONTAINER_NAME:-convex-backend}:${PORT:-3210}}
    depends_on:
      convexmonorepo-backend:
        condition: service_healthy
    stdin_open: true
    tty: true
    restart: unless-stopped
    stop_grace_period: 10s
    stop_signal: SIGINT

  #convexmonorepo-postgresql:
    #image: postgres:17
    #container_name: ${POSTGRES_CONTAINER_NAME:-convexmonorepo-postgres}
    #hostname: ${POSTGRES_CONTAINER_NAME:-convexmonorepo-postgres}
    #domainname: postgres.${NEXT_DOMAIN:-convexmonorepo.gbrown.org}
    #networks: ['${NETWORK:-nginx-bridge}']
    #ports: ['5432:5432']
    #environment:
      #- POSTGRES_USER=${POSTGRES_USER:-convexmonorepo}
      #- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      #- POSTGRES_DB=${POSTGRES_DB:-convexmonorepo_payload}
    #labels: ['com.centurylinklabs.watchtower.enable=true']
    #volumes: ['./volumes/postgres:/var/lib/postgresql/data']
    #tty: true
    #stdin_open: true
    #restart: unless-stopped
    #healthcheck:
      #test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
      #start_period: 20s
      #interval: 30s
      #retries: 5
      #timeout: 5s
