version: "3.9" services: immich-server: image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-latest} container_name: immich-server volumes: - ${UPLOAD_LOCATION:-./immich_upload}:/usr/src/app/upload - /etc/localtime:/etc/localtime:ro env_file: - .env environment: NODE_ENV: ${NODE_ENV:-production} DB_HOST: ${DB_HOST:-immich-database} DB_PORT: ${DB_PORT:-5432} DB_USERNAME: ${DB_USERNAME:-immich} DB_PASSWORD: ${DB_PASSWORD:-immich} DB_DATABASE_NAME: ${DB_DATABASE_NAME:-immich} REDIS_HOSTNAME: ${REDIS_HOSTNAME:-immich-redis} REDIS_PORT: ${REDIS_PORT:-6379} JWT_SECRET: ${JWT_SECRET:-changemeplease} ports: - "${IMMICH_PORT:-2283}:2283" expose: - 2283 depends_on: - immich-redis - immich-database restart: unless-stopped networks: - proxy - immich-internal #labels: # - traefik.enable=true # - traefik.http.routers.immich.rule=Host(`immich.example.com`) # - traefik.http.services.immich.loadbalancer.server.port=2283 # - traefik.docker.network=proxy immich-machine-learning: image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} container_name: immich-ml volumes: - ${UPLOAD_LOCATION:-./immich_upload}:/usr/src/app/upload - model-cache:/cache env_file: - .env environment: NODE_ENV: ${NODE_ENV:-production} restart: unless-stopped networks: - proxy - immich-internal immich-redis: image: docker.io/valkey/valkey:${REDIS_VERSION:-8-bookworm} container_name: immich-redis restart: unless-stopped healthcheck: test: redis-cli ping || exit 1 networks: - immich-internal immich-database: image: ghcr.io/immich-app/postgres:${POSTGRES_VERSION:-14-vectorchord0.3.0-pgvectors0.2.0} container_name: immich-database env_file: - .env environment: POSTGRES_PASSWORD: ${DB_PASSWORD:-immich} POSTGRES_USER: ${DB_USERNAME:-immich} POSTGRES_DB: ${DB_DATABASE_NAME:-immich} POSTGRES_INITDB_ARGS: '--data-checksums' PG_DATA: /var/lib/postgresql/data volumes: - ${DB_DATABASE_LOCATION:-./immich_db}:/var/lib/postgresql/data restart: unless-stopped networks: - immich-internal volumes: model-cache: networks: proxy: external: true immich-internal: internal: true