name: ${CONTAINER_NAME} services: immich-server: container_name: ${CONTAINER_NAME}_server image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} volumes: - ${UPLOAD_LOCATION}:/usr/src/app/upload - /etc/localtime:/etc/localtime:ro environment: - DB_PASSWORD=${DB_PASSWORD} - DB_USERNAME=${DB_USERNAME} - DB_DATABASE_NAME=${DB_DATABASE_NAME} - DB_HOSTNAME=${CONTAINER_NAME}_postgres - REDIS_HOSTNAME=${CONTAINER_NAME}_redis ports: - '${WEB_PORT:-2283}:2283' depends_on: - redis - database restart: unless-stopped healthcheck: disable: false immich-machine-learning: container_name: ${CONTAINER_NAME}_machine_learning image: ghcr.io/immich-app/immich-machine-learning:${ML_IMAGE_TAG:-release} volumes: - ${CONTAINER_NAME}_model_cache:/cache environment: - DB_PASSWORD=${DB_PASSWORD} - DB_USERNAME=${DB_USERNAME} - DB_DATABASE_NAME=${DB_DATABASE_NAME} - DB_HOSTNAME=${CONTAINER_NAME}_postgres - REDIS_HOSTNAME=${CONTAINER_NAME}_redis restart: unless-stopped healthcheck: disable: false redis: container_name: ${CONTAINER_NAME}_redis image: docker.io/redis:6.2-alpine healthcheck: test: redis-cli ping || exit 1 restart: unless-stopped database: container_name: ${CONTAINER_NAME}_postgres image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0 environment: POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_USER: ${DB_USERNAME} POSTGRES_DB: ${DB_DATABASE_NAME} POSTGRES_INITDB_ARGS: '--data-checksums' volumes: - ${DB_DATA_LOCATION}:/var/lib/postgresql/data healthcheck: test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1 interval: 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', ] restart: unless-stopped volumes: ${CONTAINER_NAME}_model_cache: