version: "3.8"

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

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

  #immich-machine-learning:
  #  image: altran1502/immich-machine-learning:release
  #  container_name: immich-ml
  #  entrypoint: ["/bin/sh", "./entrypoint.sh"]
  #  volumes:
  #    - ${UPLOAD_LOCATION}:/usr/src/app/upload
  #  env_file:
  #    - .env
  #  environment:
  #    - NODE_ENV=production
  #  depends_on:
  #    - database
  #  restart: always
  #  labels:
  #    - "com.centurylinklabs.watchtower.enable=true"

  immich-web:
    image: altran1502/immich-web:release
    container_name: immich-web
    entrypoint: ["/bin/sh", "./entrypoint.sh"]
    env_file:
      - .env
    restart: unless-stopped
    #labels:
    #  - "com.centurylinklabs.watchtower.enable=true"

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

  database:
    container_name: immich-database
    image: postgres:14
    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"

  immich-proxy:
    container_name: immich-proxy
    image: altran1502/immich-proxy:release
    ports:
      - 8080:8080 # WEB UI via proxy; do not remove this proxy service, use it! Even if you have your own reverse proxy.
    depends_on:
      - immich-server
    restart: unless-stopped
    #labels:
    #  - traefik.enable=false
    #  - traefik.http.routers.immich.rule=Host(`immich.example.com`)
    #  - traefik.http.services.immich.loadbalancer.server.port=8080
    #  - traefik.docker.network=proxy
    #  # Part for local lan services only
    #  - traefik.http.routers.immich.middlewares=local-ipwhitelist@file
    #  - "com.centurylinklabs.watchtower.enable=true"