services:
  web_client:
    container_name: web_client
    build:
      context: ./client
      dockerfile: Dockerfile
    ports:
      - ${CLIENT_PORT}:5173
    restart: always

  # redis_db:
  #   image: "redis:alpine"
  #   container_name: redis_db
  #   ports:
  #     - ${REDIS_PORT}:${REDIS_PORT}
  #   environment:
  #     - REDIS_PASSWORD=${REDIS_PASSWORD}
  #   command: [ "redis-server", "--requirepass", "${REDIS_PASSWORD}" ]
  #   volumes:
  #     - ./redis_data:/data
  #   expose:
  #     - ${REDIS_PORT}:${REDIS_PORT}
  #   restart: unless-stopped

  ems:
    container_name: ems
    build:
      context: ./ems
      dockerfile: Dockerfile
    volumes:
      - ./ems/public:/app/public
    # links:
    #   - redis_db:redis_db
    #   - psql_db:psql_db
    # depends_on:
    #   - redis_db
    #   - psql_db
    environment:
      - REDIS_PASSWORD=${REDIS_PASSWORD}
      - REDIS_HOST=${REDIS_HOST}
      - REDIS_PORT=${REDIS_PORT}
      - EMS_PORT=${EMS_PORT}
      - DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@psql_db:${POSTGRES_PORT}/${POSTGRES_DB}?schema=public
    ports:
      - ${EMS_PORT}:${EMS_PORT}
    restart: always

  postgis_db:
    container_name: postgis_db
    image: postgis/postgis:17-3.4-alpine
    volumes:
      - ./postgis_db:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=${POSTGRES_DB}
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    ports:
      - ${POSTGRES_PORT}:${POSTGRES_PORT}
    expose:
      - ${POSTGRES_PORT}
    healthcheck:
      test:
        ['CMD-SHELL', 'pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 10s
    restart: always
  
  ems_db:
    container_name: ems_db
    image: postgres:16.4-alpine
    volumes:
      - ./ems_db:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=${POSTGRES_DB}
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    ports:
      - ${POSTGRES_PORT}:${POSTGRES_PORT}
    expose:
      - ${POSTGRES_PORT}
    healthcheck:
      test:
        ['CMD-SHELL', 'pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 10s
    restart: always