app-store/apps/immich/docker-compose.yml

99 lines
3.7 KiB
YAML
Raw Normal View History

2024-02-23 06:57:10 +00:00
version: "3.7"
2022-09-11 10:52:06 +00:00
services:
2022-10-13 21:06:59 +00:00
immich:
container_name: immich
image: ghcr.io/immich-app/immich-server:v1.106.4
volumes:
- ${ROOT_FOLDER_HOST}/media/data/images/immich:/usr/src/app/upload
environment:
- NODE_ENV=production
- DB_HOSTNAME=immich-db
- DB_USERNAME=tipi
- DB_PASSWORD=${DB_PASSWORD}
- ENABLE_MAPBOX=false
- DB_DATABASE_NAME=immich
- REDIS_HOSTNAME=immich-redis
- JWT_SECRET=${JWT_SECRET}
2022-10-13 21:06:59 +00:00
depends_on:
- immich-redis
- immich-db
ports:
- ${APP_PORT}:3001
2022-10-13 21:06:59 +00:00
restart: unless-stopped
networks:
- tipi_main_network
labels:
# Main
traefik.enable: true
traefik.http.middlewares.immich-web-redirect.redirectscheme.scheme: https
traefik.http.services.immich.loadbalancer.server.port: 3001
# Web
traefik.http.routers.immich-insecure.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.immich-insecure.entrypoints: web
traefik.http.routers.immich-insecure.service: immich
traefik.http.routers.immich-insecure.middlewares: immich-web-redirect
# Websecure
2022-10-13 21:06:59 +00:00
traefik.http.routers.immich.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.immich.entrypoints: websecure
traefik.http.routers.immich.service: immich
traefik.http.routers.immich.tls.certresolver: myresolver
# Local domain
traefik.http.routers.immich-local-insecure.rule: Host(`immich.${LOCAL_DOMAIN}`)
traefik.http.routers.immich-local-insecure.entrypoints: web
traefik.http.routers.immich-local-insecure.service: immich
traefik.http.routers.immich-local-insecure.middlewares: immich-web-redirect
# Local domain secure
traefik.http.routers.immich-local.rule: Host(`immich.${LOCAL_DOMAIN}`)
traefik.http.routers.immich-local.entrypoints: websecure
traefik.http.routers.immich-local.service: immich
traefik.http.routers.immich-local.tls: true
2022-10-13 21:06:59 +00:00
2022-09-11 10:52:06 +00:00
immich-machine-learning:
2022-09-24 15:10:02 +00:00
container_name: immich-machine-learning
image: ghcr.io/immich-app/immich-machine-learning:v1.106.4
2022-09-11 10:52:06 +00:00
volumes:
- ${ROOT_FOLDER_HOST}/media/data/images/immich:/usr/src/app/upload
2023-03-27 00:39:32 +00:00
- ${APP_DATA_DIR}/data/immich-ml-cache:/cache
2022-09-11 10:52:06 +00:00
environment:
- NODE_ENV=production
2022-09-24 15:10:02 +00:00
- DB_HOSTNAME=immich-db
2022-09-11 10:52:06 +00:00
- DB_USERNAME=tipi
- DB_PASSWORD=${DB_PASSWORD}
- DB_NAME=immich
2022-09-24 15:10:02 +00:00
- DB_DATABASE_NAME=immich
2022-09-11 10:52:06 +00:00
depends_on:
- immich-db
restart: unless-stopped
networks:
- tipi_main_network
immich-redis:
container_name: immich-redis
image: redis:6.2
restart: unless-stopped
networks:
- tipi_main_network
healthcheck:
test: redis-cli ping || exit 1
2022-09-11 10:52:06 +00:00
immich-db:
container_name: immich-db
2024-02-23 06:57:10 +00:00
image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
2022-09-11 10:52:06 +00:00
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: tipi
POSTGRES_DB: immich
PG_DATA: /var/lib/postgresql/data
volumes:
- ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data
restart: unless-stopped
networks:
- tipi_main_network
healthcheck:
test: pg_isready --dbname='${DB_DATABASE_NAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1
interval: 5m
start_interval: 30s
start_period: 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"]