From 6b2e1f166e9ecace9ce04c51bd9d1d9453bc9e9f Mon Sep 17 00:00:00 2001 From: notplants <@notplants> Date: Fri, 20 Feb 2026 11:34:35 -0500 Subject: [PATCH 1/3] working on minio-initialize --- README.md | 2 +- abra.sh | 5 +++++ compose.yml | 32 ++++++++------------------------ minio-initialize.sh | 29 +++++++++++++++++++++++++++++ 4 files changed, 43 insertions(+), 25 deletions(-) create mode 100644 minio-initialize.sh diff --git a/README.md b/README.md index 1c101ca..1945486 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ * `abra app config ` * `abra app deploy ` * `abra app cmd backend migrate` -* `abra app restart minio-bootstrap` (Note: this will appear to fail, but probably worked! Check `abra app logs minio-bootstrap`) +* Minio buckets are created automatically on first deploy. To manually trigger: `abra app cmd minio minio_initialize` You should then be able to visit the landing page of your app, but not yet to login. To login, you need to deploy and integrate single sign on (described below in the "Configure Authentication" section). diff --git a/abra.sh b/abra.sh index 055ab38..c0b0c3e 100755 --- a/abra.sh +++ b/abra.sh @@ -3,6 +3,7 @@ export ABRA_ENTRYPOINT_VERSION=v5 export NGINX_CONF_VERSION=v3 export PG_BACKUP_VERSION=v3 +export MINIO_INITIALIZE_VERSION=v1 environment() { # this exports all the secrets as environment variables @@ -13,3 +14,7 @@ migrate() { environment python manage.py migrate --noinput } + +minio_initialize() { + /minio-initialize.sh +} diff --git a/compose.yml b/compose.yml index f8255af..83a6fd7 100644 --- a/compose.yml +++ b/compose.yml @@ -199,29 +199,6 @@ services: networks: - backend - minio-bootstrap: - # NOTE: Not started by default, only run with a manual `abra app restart` / `docker service scale` - image: minio/mc:RELEASE.2025-05-21T01-59-54Z - environment: *minio-env - networks: - - backend - entrypoint: > - sh -c " - MINIO_ROOT_USER=\"\$$(cat /run/secrets/minio_ru)\" && - MINIO_ROOT_PASSWORD=\"\$$(cat /run/secrets/minio_rp)\" && - /usr/bin/mc alias set docs http://minio:9000 \$${MINIO_ROOT_USER} \"\$${MINIO_ROOT_PASSWORD}\" && - /usr/bin/mc mb --ignore-existing docs/docs-media-storage && - /usr/bin/mc version enable docs/docs-media-storage && - exit 0" - deploy: - mode: replicated - replicas: 0 - restart_policy: - condition: none - secrets: - - minio_rp - - minio_ru - minio: image: minio/minio:RELEASE.2025-05-24T17-08-30Z environment: *minio-env @@ -233,7 +210,8 @@ services: networks: - backend command: minio server /data - entrypoint: ["/usr/bin/docker-entrypoint.sh"] + entrypoint: > + sh -c "/minio-initialize.sh & exec /usr/bin/docker-entrypoint.sh \"$$@\"" -- volumes: - minio:/data deploy: @@ -244,6 +222,9 @@ services: - source: abra_entrypoint target: /abra-entrypoint.sh mode: 0555 + - source: minio_initialize + target: /minio-initialize.sh + mode: 0555 secrets: - minio_rp - minio_ru @@ -291,6 +272,9 @@ configs: abra_entrypoint: name: ${STACK_NAME}_entrypoint_${ABRA_ENTRYPOINT_VERSION} file: abra-entrypoint.sh + minio_initialize: + name: ${STACK_NAME}_minio_initialize_${MINIO_INITIALIZE_VERSION} + file: minio-initialize.sh secrets: django_sk: diff --git a/minio-initialize.sh b/minio-initialize.sh new file mode 100644 index 0000000..3511083 --- /dev/null +++ b/minio-initialize.sh @@ -0,0 +1,29 @@ +#!/bin/sh +set -e + +# Wait for minio to be ready (up to 60 seconds) +i=0 +while ! mc ready local 2>/dev/null; do + i=$((i+1)) + if [ "$i" -ge 60 ]; then + echo "minio-initialize: timed out waiting for minio to be ready" >&2 + exit 1 + fi + sleep 1 +done + +MINIO_ROOT_USER="$(cat /run/secrets/minio_ru)" +MINIO_ROOT_PASSWORD="$(cat /run/secrets/minio_rp)" + +mc alias set docs http://localhost:9000 "${MINIO_ROOT_USER}" "${MINIO_ROOT_PASSWORD}" + +# Idempotent: skip if bucket already exists +if mc ls docs/docs-media-storage > /dev/null 2>&1; then + echo "minio-initialize: bucket 'docs-media-storage' already exists, skipping" + exit 0 +fi + +echo "minio-initialize: creating bucket 'docs-media-storage'..." +mc mb docs/docs-media-storage +mc version enable docs/docs-media-storage +echo "minio-initialize: done" From 10d7a66c4a0409a9817f397c2a6b154a2dc838fc Mon Sep 17 00:00:00 2001 From: notplants Date: Fri, 20 Feb 2026 17:55:01 +0000 Subject: [PATCH 2/3] bump to 0.2.7+v4.5.0 --- compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose.yml b/compose.yml index 83a6fd7..60d778d 100644 --- a/compose.yml +++ b/compose.yml @@ -91,7 +91,7 @@ services: labels: - "traefik.enable=false" - "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}" - - "coop-cloud.${STACK_NAME}.version=0.2.6+v4.5.0" + - "coop-cloud.${STACK_NAME}.version=0.2.7+v4.5.0" user: "${DOCKER_USER:-1000}" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080"] From 3647245ea437c86511235d1874c3e84948e7be7f Mon Sep 17 00:00:00 2001 From: notplants Date: Fri, 20 Feb 2026 13:01:45 -0500 Subject: [PATCH 3/3] fix readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1945486..36ff97f 100644 --- a/README.md +++ b/README.md @@ -21,10 +21,10 @@ * `abra app config ` * `abra app deploy ` * `abra app cmd backend migrate` -* Minio buckets are created automatically on first deploy. To manually trigger: `abra app cmd minio minio_initialize` You should then be able to visit the landing page of your app, but not yet to login. To login, you need to deploy and integrate single sign on (described below in the "Configure Authentication" section). +Minio buckets are created automatically on first deploy. To manually trigger: `abra app cmd minio minio_initialize` ## Configure Authentication