feat(docker-stack): add immich stack
This commit is contained in:
112
docker/stacks/immich/docker-compose.yaml
Normal file
112
docker/stacks/immich/docker-compose.yaml
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
services:
|
||||||
|
immich-server:
|
||||||
|
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
|
||||||
|
volumes:
|
||||||
|
- ${UPLOAD_LOCATION}:/usr/src/app/upload
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
environment:
|
||||||
|
UPLOAD_LOCATION: ${UPLOAD_LOCATION}
|
||||||
|
DB_PASSWORD: ${DB_PASSWORD}
|
||||||
|
DB_USERNAME: ${DB_USERNAME}
|
||||||
|
DB_DATABASE_NAME: ${DB_DATABASE_NAME}
|
||||||
|
REDIS_HOSTNAME: redis
|
||||||
|
TZ: ${TZ}
|
||||||
|
ports:
|
||||||
|
- 2283:3001
|
||||||
|
depends_on:
|
||||||
|
- redis
|
||||||
|
- database
|
||||||
|
restart: always
|
||||||
|
healthcheck:
|
||||||
|
disable: false
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.immich.rule=Host(`${TRAEFIK_DOMAIN}`)"
|
||||||
|
- "traefik.http.routers.immich.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.immich.tls.certresolver=myresolver"
|
||||||
|
- "traefik.docker.network=traefik"
|
||||||
|
networks:
|
||||||
|
- immich
|
||||||
|
- traefik
|
||||||
|
|
||||||
|
immich-machine-learning:
|
||||||
|
container_name: immich_machine_learning
|
||||||
|
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
|
||||||
|
volumes:
|
||||||
|
- model-cache:/cache
|
||||||
|
restart: always
|
||||||
|
healthcheck:
|
||||||
|
disable: false
|
||||||
|
networks:
|
||||||
|
- immich
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: registry.hub.docker.com/library/redis:6.2-alpine@sha256:84882e87b54734154586e5f8abd4dce69fe7311315e2fc6d67c29614c8de2672
|
||||||
|
healthcheck:
|
||||||
|
test: redis-cli ping || exit 1
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- immich
|
||||||
|
|
||||||
|
database:
|
||||||
|
image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0
|
||||||
|
environment:
|
||||||
|
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
||||||
|
POSTGRES_USER: ${DB_USERNAME}
|
||||||
|
POSTGRES_DB: ${DB_DATABASE_NAME}
|
||||||
|
POSTGRES_INITDB_ARGS: '--data-checksums'
|
||||||
|
DB_STORAGE_TYPE: 'HDD'
|
||||||
|
volumes:
|
||||||
|
- ${SERVICE_DATA_ROOT_PATH}/database:/var/lib/postgresql/data
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- immich
|
||||||
|
|
||||||
|
backup-files:
|
||||||
|
image: creativeprojects/resticprofile:${RP_VERSION:-latest}
|
||||||
|
entrypoint: '/bin/sh'
|
||||||
|
hostname: immich-resticprofile
|
||||||
|
restart: always
|
||||||
|
command:
|
||||||
|
- '-c'
|
||||||
|
- 'resticprofile schedule --all && crond -f'
|
||||||
|
volumes:
|
||||||
|
- ${SERVICE_DATA_ROOT_PATH}/restic/resticprofile.yaml:/etc/resticprofile/profiles.yaml:ro
|
||||||
|
- ${SERVICE_DATA_ROOT_PATH}/restic/restic.key:/etc/resticprofile/key:ro
|
||||||
|
- ${UPLOAD_LOCATION}:${UPLOAD_LOCATION}:ro
|
||||||
|
- ${SERVICE_DATA_ROOT_PATH}/db_dumps:/db_dumps:ro
|
||||||
|
environment:
|
||||||
|
TZ: ${TZ}
|
||||||
|
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
|
||||||
|
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
|
||||||
|
|
||||||
|
backup-database:
|
||||||
|
container_name: immich_db_dumper
|
||||||
|
image: prodrigestivill/postgres-backup-local:14
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
POSTGRES_HOST: database
|
||||||
|
POSTGRES_CLUSTER: 'TRUE'
|
||||||
|
POSTGRES_USER: ${DB_USERNAME}
|
||||||
|
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
||||||
|
POSTGRES_DB: ${DB_DATABASE_NAME}
|
||||||
|
BACKUP_KEEP_MINS: "120"
|
||||||
|
SCHEDULE: "50 * * * *"
|
||||||
|
POSTGRES_EXTRA_OPTS: '--clean --if-exists'
|
||||||
|
BACKUP_DIR: /db_dumps
|
||||||
|
volumes:
|
||||||
|
- ${SERVICE_DATA_ROOT_PATH}/db_dumps:/db_dumps
|
||||||
|
depends_on:
|
||||||
|
- database
|
||||||
|
networks:
|
||||||
|
- immich
|
||||||
|
|
||||||
|
networks:
|
||||||
|
immich:
|
||||||
|
name: immich
|
||||||
|
traefik:
|
||||||
|
name: traefik
|
||||||
|
external: true
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
model-cache:
|
||||||
11
docker/stacks/immich/stack.env
Normal file
11
docker/stacks/immich/stack.env
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
UPLOAD_LOCATION=
|
||||||
|
SERVICE_DATA_ROOT_PATH=
|
||||||
|
TRAEFIK_DOMAIN=
|
||||||
|
IMMICH_VERSION=release
|
||||||
|
DB_PASSWORD=
|
||||||
|
DB_USERNAME=immich
|
||||||
|
DB_DATABASE_NAME=immich
|
||||||
|
AWS_ACCESS_KEY_ID=
|
||||||
|
AWS_SECRET_ACCESS_KEY=
|
||||||
|
TZ=
|
||||||
|
|
||||||
Reference in New Issue
Block a user