services: immich-server: image: altran1502/immich-server:${IMMICH_VERSION:-release} container_name: immich-server volumes: - ${UPLOAD_LOCATION}:/usr/src/app/upload - /etc/localtime:/etc/localtime:ro env_file: - .env environment: - NODE_ENV=production ports: - 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 # # Part for local lan services only # - traefik.http.routers.immich-swagger.rule=Host(`immich.example.com`) && PathPrefix(`/doc`) # - traefik.http.routers.immich-swagger.middlewares=local-ipwhitelist@file immich-machine-learning: image: altran1502/immich-machine-learning:${IMMICH_VERSION:-release} container_name: immich-ml volumes: - ${UPLOAD_LOCATION}:/usr/src/app/upload - model-cache:/cache env_file: - .env environment: - NODE_ENV=production restart: unless-stopped networks: - proxy # machine learning requires internet connecting for model download - immich-internal immich-redis: image: docker.io/valkey/valkey:8-bookworm container_name: immich-redis restart: unless-stopped healthcheck: test: redis-cli ping || exit 1 networks: - immich-internal immich-database: image: tensorchord/pgvecto-rs:pg14-v0.2.0 container_name: immich-database env_file: - .env environment: POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_USER: ${DB_USERNAME} POSTGRES_DB: ${DB_DATABASE_NAME} PG_DATA: /var/lib/postgresql/data volumes: - ${DB_DATABASE_LOCATION}:/var/lib/postgresql/data 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 restart: unless-stopped networks: - immich-internal volumes: model-cache: networks: proxy: external: true immich-internal: internal: true