name: immich-e2e

services:
  immich-app-base:
    extends:
      file: ../docker/docker-compose.dev.yml
      service: immich-app-base

  immich-init:
    extends:
      file: ../docker/docker-compose.dev.yml
      service: immich-init
    container_name: immich-e2e-init

  immich-server:
    extends:
      file: ../docker/docker-compose.dev.yml
      service: immich-server
    container_name: immich-e2e-server
    ports: !reset []
    env_file: !reset []
    environment:
      DB_HOSTNAME: database
      DB_USERNAME: postgres
      DB_PASSWORD: postgres
      DB_DATABASE_NAME: immich
      IMMICH_MACHINE_LEARNING_ENABLED: 'false'
      IMMICH_TELEMETRY_INCLUDE: all
      IMMICH_ENV: testing
      IMMICH_PORT: '2285'
      IMMICH_IGNORE_MOUNT_CHECK_ERRORS: 'true'
    volumes:
      - ./test-assets:/test-assets
    depends_on:
      immich-init:
        condition: service_healthy
      redis:
        condition: service_started
      database:
        condition: service_healthy

  immich-web:
    extends:
      file: ../docker/docker-compose.dev.yml
      service: immich-web
    container_name: immich-e2e-web
    ports: !override
      - 2285:3000
    environment:
      IMMICH_SERVER_URL: http://immich-server:2285/
    depends_on:
      immich-init:
        condition: service_healthy
    restart: unless-stopped

  redis:
    extends:
      file: ../docker/docker-compose.dev.yml
      service: redis
    container_name: immich-e2e-redis

  database:
    extends:
      file: ../docker/docker-compose.dev.yml
      service: database
    container_name: immich-e2e-postgres
    command: -c fsync=off -c shared_preload_libraries=vchord.so -c config_file=/var/lib/postgresql/data/postgresql.conf
    env_file: !reset []
    ports: !override
      - 5435:5432
    environment:
      POSTGRES_PASSWORD: postgres
      POSTGRES_USER: postgres
      POSTGRES_DB: immich
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -U postgres -d immich']
      interval: 1s
      timeout: 5s
      retries: 30
      start_period: 10s

volumes:
  model_cache:
  prometheus_data:
  grafana_data:
  build_cache:
  server_node_modules:
  web_node_modules:
  github_node_modules:
  cli_node_modules:
  docs_node_modules:
  e2e_node_modules:
  sdk_node_modules:
  app_node_modules:
  sveltekit:
  coverage:
