services: immich: image: ghcr.io/immich-app/immich-server:release container_name: immich restart: unless-stopped volumes: - data:/usr/src/app/upload - /etc/localtime:/etc/localtime:ro environment: DB_HOSTNAME: "immich-db" env_file: - .env depends_on: - redis - db immich-machine-learning: image: ghcr.io/immich-app/immich-machine-learning:release container_name: immich-machine-learning restart: unless-stopped volumes: - cache:/cache env_file: - .env redis: image: docker.io/redis:6.2-alpine@sha256:2ba50e1ac3a0ea17b736ce9db2b0a9f6f8b85d4c27d5f5accc6a416d8f42c6d5 container_name: immich-redis restart: unless-stopped healthcheck: test: redis-cli ping || exit 1 volumes: - data_redis:/data db: image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0 container_name: immich-db restart: unless-stopped volumes: # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file - data_db:/var/lib/postgresql/data healthcheck: test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1 interval: 5m start_interval: 30s start_period: 5m 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_PASSWORD: ${DB_PASSWORD} POSTGRES_USER: ${DB_USERNAME} POSTGRES_DB: ${DB_DATABASE_NAME} POSTGRES_INITDB_ARGS: '--data-checksums' volumes: data: data_db: data_redis: cache: networks: default: name: proxy external: true