# stack for immich >= 1.91.0

version: "3.8"

services:
  immich-server:
    container_name: immich-server
    image: altran1502/immich-server:release
    command: [ "start.sh", "immich" ]
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    environment:
      - NODE_ENV=production
    ports:
      - 2283:3001
    expose:
      - 3001
    depends_on:
      - immich-redis
      - immich-database
    restart: unless-stopped
    #networks:
    #  - proxy
    #labels:
    #  - traefik.enable=false
    #  - traefik.http.routers.immich.rule=Host(`immich.example.com`)
    #  - traefik.http.services.immich.loadbalancer.server.port=3001
    #  - traefik.docker.network=proxy
    #  # Part for local lan services only
    #  - traefik.http.routers.immich.middlewares=local-ipwhitelist@file
    #  - "com.centurylinklabs.watchtower.enable=true"    

  immich-microservices:
    container_name: immich-microservices
    image: altran1502/immich-server:release
    command: [ "start.sh", "microservices" ]
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    environment:
      - NODE_ENV=production
    depends_on:
      - immich-redis
      - immich-database
    restart: unless-stopped
    #labels:
    #  - "com.centurylinklabs.watchtower.enable=true"
    #networks:
    #  - proxy 

  immich-machine-learning:
    image: altran1502/immich-machine-learning: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
    #labels:
    #  - "com.centurylinklabs.watchtower.enable=true"
    #networks:
    #  - proxy

  immich-redis:
    container_name: immich-redis
    image: redis:6.2-alpine
    restart: unless-stopped
    #labels:
    #  - "com.centurylinklabs.watchtower.enable=true"
    #networks:
    #  - proxy

  immich-database:
    container_name: immich-database
    image: tensorchord/pgvecto-rs:pg14-v0.1.11
    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
    restart: unless-stopped
    #labels:
    #  - "com.centurylinklabs.watchtower.enable=true"
    #networks:
    #  - proxy
    
volumes:
  model-cache:

#networks:
#  proxy:
#    external: true