networks: immich_network: name: immich_network services: redis: container_name: immich_redis image: docker.io/redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae restart: always healthcheck: test: ["CMD", "redis-cli", "ping"] networks: - immich_network database: container_name: immich_postgres image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0 restart: always command: > postgres -c shared_preload_libraries=vectors.so -c 'search_path="$$user", public, vectors' -c logging_collector=on -c max_wal_size=2GB -c shared_buffers=512MB -c wal_compression=on environment: POSTGRES_DB: immich POSTGRES_INITDB_ARGS: --data-checksums POSTGRES_PASSWORD: postgres POSTGRES_USER: postgres healthcheck: test: ["CMD-SHELL", "pg_isready --dbname=immich --username=postgres || exit 1"] interval: 5m start_interval: 30s start_period: 5m volumes: - /app-config/database:/var/lib/postgresql/data networks: - immich_network immich-machine-learning: container_name: immich_machine_learning image: ghcr.io/immich-app/immich-machine-learning:release-cuda restart: always healthcheck: disable: false environment: POSTGRES_DB: immich POSTGRES_INITDB_ARGS: --data-checksums POSTGRES_PASSWORD: postgres POSTGRES_USER: postgres MACHINE_LEARNING_MODEL_INTRA_OP_THREADS: 2 devices: - /dev/dri/card1:/dev/dri/card1 - /dev/dri/renderD128:/dev/dri/renderD128 device_cgroup_rules: - 'c 189:* rmw' volumes: - /dev/bus/usb:/dev/bus/usb - /app-config/cache:/cache networks: - immich_network immich-server: container_name: immich_server image: ghcr.io/immich-app/immich-server:release restart: always user: "1000:1000" group_add: - 1000 depends_on: - redis - database healthcheck: disable: false environment: POSTGRES_DB: immich POSTGRES_INITDB_ARGS: --data-checksums POSTGRES_PASSWORD: postgres POSTGRES_USER: postgres PUID: 1000 PGID: 1000 ports: - "2283:2283" volumes: - /next:/usr/src/app/upload - /etc/localtime:/etc/localtime:ro networks: - immich_network