diff --git a/compose.template.yml b/compose.template.yml index 51f9582..a85824d 100644 --- a/compose.template.yml +++ b/compose.template.yml @@ -1,7 +1,31 @@ services: + init: + image: busybox:1.37.0 + user: root:root + command: /init.sh + restart: no + network_mode: none + volumes: + - ./init.sh:/init.sh:ro + # Used for resolving user and group names within the init script + - /etc/passwd:/etc/passwd:ro + - /etc/group:/etc/group:ro + # Mount all named volumes so they can be initialised + - minio_data:/minio_data:rw + - museum_data:/museum_data:rw + - postgres_data:/postgres_data:rw + # Temporary mounts for migrating data + - /mnt/ente_1/minio_data:/minio_data_old:ro + - /mnt/ente_1/museum_data:/museum_data_old:ro + - /mnt/ente_1/postgres_data:/postgres_data_old:ro + labels: + diun.enable: "true" + diun.watch_repo: "true" + diun.include_tags: "latest" + museum: container_name: ente_museum - image: ghcr.io/ente-io/server:927c6a316f181c7901446311f0085593b346b336 + image: ghcr.io/ente/server:0137a0c754ac0fe4f2c4c7421727c349327eb990 restart: unless-stopped user: 2008:2008 # ente:ente environment: @@ -11,6 +35,9 @@ services: ports: - 8080:8080 # API depends_on: + init: + condition: service_completed_successfully + restart: true postgres: condition: service_healthy volumes: @@ -39,7 +66,7 @@ services: web: container_name: ente_web - image: ghcr.io/ente-io/web + image: ghcr.io/ente/web restart: unless-stopped # user: 2008:2008 # ente:ente networks: @@ -68,6 +95,10 @@ services: image: postgres:15 restart: unless-stopped user: 2008:2008 # ente:ente + depends_on: + init: + condition: service_completed_successfully + restart: true networks: - ente_network secrets: @@ -94,11 +125,15 @@ services: image: minio/minio:RELEASE.2025-09-07T16-13-09Z restart: unless-stopped user: 2008:2008 # ente:ente + depends_on: + init: + condition: service_completed_successfully + restart: true networks: - ente_network ports: - 3200:3200 # MinIO API - # Uncomment to enable MinIO Web UI + # Uncomment to enable MinIO Web UI # - 3201:3201 secrets: - minio_root_user @@ -131,6 +166,11 @@ services: diun.watch_repo: "true" diun.include_tags: "latest" +volumes: + minio_data: + museum_data: + postgres_data: + networks: ente_network: name: ente_network diff --git a/init.sh b/init.sh new file mode 100755 index 0000000..662812e --- /dev/null +++ b/init.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env sh + +# Define a helper function that runs a command +# If the command fails, the script prints an error message +# and exits immediately. +run() { + # "$@" expands to all arguments passed to this function + # and preserves proper word splitting and quoting. + "$@" || { + echo "Error: command failed: $*" >&2 + exit 1 + } +} + +run chown ente:ente /minio_data +run chown ente:ente /museum_data +run chown ente:ente /postgres_data +