create minio bucket automatically on startup (minio-initialize.sh)
All checks were successful
cc-ci/testme cc-ci: success
All checks were successful
cc-ci/testme cc-ci: success
Replace the one-shot minio-createbuckets service (which required a manual 'abra app restart minio-createbuckets' that appeared to hang) with a minio-initialize.sh config, ported from lasuite-docs. The minio service entrypoint runs it in the background before starting minio; it waits for minio to be ready and idempotently creates the drive-media-storage bucket with versioning. Manual trigger: 'abra app cmd minio minio_initialize'.
This commit is contained in:
@ -27,11 +27,11 @@ This recipe requires four domains. One domain for drive, and one for minio which
|
||||
* `abra app config <app-name>`
|
||||
- make sure to set MINIO_DOMAIN, COLLABORA_DOMAIN, ONLY_OFFICE_DOMAIN to the domains you set up for each.
|
||||
* `abra app deploy <app-name>`
|
||||
* `abra app restart <app-name> minio-createbuckets` (Note: this will appear to fail, but probably worked! Check `abra app logs <app-name> minio-createbuckets`)
|
||||
|
||||
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).
|
||||
|
||||
* Migrations run automatically on backend startup. To trigger manually: `abra app cmd <app-name> backend migrate`
|
||||
* Minio buckets are created automatically on first deploy. To manually trigger: `abra app cmd <app-name> minio minio_initialize`
|
||||
|
||||
Wopi discovery is supposed to happen automatically, but if collabora/onlyoffice are not connecting, you can try running:
|
||||
|
||||
|
||||
5
abra.sh
5
abra.sh
@ -5,6 +5,7 @@ export NGINX_CONF_VERSION=v6
|
||||
export ONLYOFFICE_CONF_VERSION=v2
|
||||
export PG_BACKUP_VERSION=v4
|
||||
export MIGRATE_VERSION=v1
|
||||
export MINIO_INITIALIZE_VERSION=v1
|
||||
|
||||
environment() {
|
||||
# this exports all the secrets as environment variables
|
||||
@ -15,6 +16,10 @@ migrate() {
|
||||
/migrate.sh
|
||||
}
|
||||
|
||||
minio_initialize() {
|
||||
/minio-initialize.sh
|
||||
}
|
||||
|
||||
trigger_wopi() {
|
||||
environment
|
||||
python manage.py trigger_wopi_configuration
|
||||
|
||||
31
compose.yml
31
compose.yml
@ -228,28 +228,6 @@ services:
|
||||
networks:
|
||||
- backend
|
||||
|
||||
minio-createbuckets:
|
||||
image: minio/minio:RELEASE.2025-09-07T16-13-09Z
|
||||
environment: *minio-env
|
||||
entrypoint: >
|
||||
sh -c "
|
||||
MINIO_ROOT_USER=\"\$$(cat /run/secrets/minio_ru)\" &&
|
||||
MINIO_ROOT_PASSWORD=\"\$$(cat /run/secrets/minio_rp)\" &&
|
||||
/usr/bin/mc alias set drive http://minio:9000 \$${MINIO_ROOT_USER} \"\$${MINIO_ROOT_PASSWORD}\" && \
|
||||
/usr/bin/mc mb drive/drive-media-storage && \
|
||||
/usr/bin/mc version enable drive/drive-media-storage && \
|
||||
exit 0;"
|
||||
deploy:
|
||||
mode: replicated
|
||||
replicas: 0
|
||||
restart_policy:
|
||||
condition: none
|
||||
secrets:
|
||||
- minio_rp
|
||||
- minio_ru
|
||||
networks:
|
||||
- backend
|
||||
|
||||
minio:
|
||||
image: minio/minio:RELEASE.2025-09-07T16-13-09Z
|
||||
environment: *minio-env
|
||||
@ -262,13 +240,17 @@ services:
|
||||
- backend
|
||||
- proxy
|
||||
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
|
||||
configs:
|
||||
- source: abra_entrypoint
|
||||
target: /abra-entrypoint.sh
|
||||
mode: 0555
|
||||
- source: minio_initialize
|
||||
target: /minio-initialize.sh
|
||||
mode: 0555
|
||||
secrets:
|
||||
- minio_rp
|
||||
- minio_ru
|
||||
@ -413,6 +395,9 @@ configs:
|
||||
migrate:
|
||||
name: ${STACK_NAME}_migrate_${MIGRATE_VERSION}
|
||||
file: migrate.sh
|
||||
minio_initialize:
|
||||
name: ${STACK_NAME}_minio_initialize_${MINIO_INITIALIZE_VERSION}
|
||||
file: minio-initialize.sh
|
||||
onlyoffice_conf:
|
||||
name: ${STACK_NAME}_onlyoffice_conf_${ONLYOFFICE_CONF_VERSION}
|
||||
file: onlyoffice-config.json.tmpl
|
||||
|
||||
29
minio-initialize.sh
Normal file
29
minio-initialize.sh
Normal file
@ -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 drive http://localhost:9000 "${MINIO_ROOT_USER}" "${MINIO_ROOT_PASSWORD}"
|
||||
|
||||
# Idempotent: skip if bucket already exists
|
||||
if mc ls drive/drive-media-storage > /dev/null 2>&1; then
|
||||
echo "minio-initialize: bucket 'drive-media-storage' already exists, skipping"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "minio-initialize: creating bucket 'drive-media-storage'..."
|
||||
mc mb drive/drive-media-storage
|
||||
mc version enable drive/drive-media-storage
|
||||
echo "minio-initialize: done"
|
||||
Reference in New Issue
Block a user