# immich - https://docs.immich.app/overview/quick-start/
# disable-machine-learning - https://docs.immich.app/FAQ/#how-can-i-disable-machine-learning
name: immich

services:
    immich-server:
        container_name: immich_server
        image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
        # extends:
        #   file: hwaccel.transcoding.yml
        #   service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
        volumes:
            # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
            - ${UPLOAD_LOCATION}:/data
            - ${EXTERNAL_FILES}:/photos:ro
            - /etc/localtime:/etc/localtime:ro
        env_file:
            - .env
        ports:
            - "${IMMICH_PORT}:2283"
        depends_on:
            - redis
            - database
        restart: unless-stopped
        healthcheck:
            disable: false
        networks:
                - immich-network

    immich-machine-learning:
        container_name: immich_machine_learning
        # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
        # Example tag: ${IMMICH_VERSION:-release}-cuda
        image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
        # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
        #   file: hwaccel.ml.yml
        #   service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
        volumes:
            - ${MACHINE_LEARNING_CACHE}:/cache
        env_file:
            - .env
        restart: unless-stopped
        healthcheck:
            disable: false
        networks:
                - immich-network

    redis:
        container_name: immich_redis
        image: docker.io/valkey/valkey:8@sha256:81db6d39e1bba3b3ff32bd3a1b19a6d69690f94a3954ec131277b9a26b95b3aa
        healthcheck:        
            test: redis-cli ping || exit 1
        restart: unless-stopped
        networks:
                - immich-network


    database:
        container_name: immich_postgres
        image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23
        environment:
            POSTGRES_PASSWORD: ${DB_PASSWORD}
            POSTGRES_USER: ${DB_USERNAME}
            POSTGRES_DB: ${DB_DATABASE_NAME}
            POSTGRES_INITDB_ARGS: "--data-checksums"
            DB_STORAGE_TYPE: 'HDD'
        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
            - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
        shm_size: 128mb
        restart: unless-stopped
        networks:
                - immich-network

#volumes:
    #model-cache:

    # immich-library:
    #     name: immich-library
    #     driver_opts:
    #         type: nfs
    #         o: addr=truenas,nolock,soft,rw
    #         device: :/mnt/store/vault/app/immich/library
            
networks:
    immich-network:
        driver: bridge
    # frontend:
    #     external: true
