services: app: environment: - MYSQL_HOST=db - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - MYSQL_PASSWORD_FILE=/run/secrets/db_password db: image: "mariadb:12.0" environment: - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - MYSQL_PASSWORD_FILE=/run/secrets/db_password - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_root_password - MAX_DB_CONNECTIONS=${MAX_DB_CONNECTIONS:-100} - INNODB_BUFFER_POOL_SIZE=${INNODB_BUFFER_POOL_SIZE:-1G}" configs: - source: my_tune target: /etc/mysql/conf.d/my-tune.cnf secrets: - db_root_password - db_password volumes: - "mariadb:/var/lib/mysql" networks: - internal deploy: labels: backupbot.backup: "true" backupbot.backup.pre-hook: 'mariadb-dump --single-transaction -u root -p"$$(cat /run/secrets/db_root_password)" nextcloud > /var/lib/mysql/backup.sql' backupbot.backup.volumes.mariadb.path: "backup.sql" backupbot.restore.post-hook: 'mariadb -u root -p"$$(cat /run/secrets/db_root_password)" nextcloud < /var/lib/mysql/backup.sql' healthcheck: test: ["CMD-SHELL", 'mariadb-admin -p"$$(cat /run/secrets/db_root_password)" ping'] interval: 30s timeout: 10s retries: 10 start_period: 1m configs: my_tune: name: ${STACK_NAME}_my_cnf file: my-tune.cnf template_driver: golang secrets: db_root_password: external: true name: ${STACK_NAME}_db_root_password db_password: external: true name: ${STACK_NAME}_db_password volumes: mariadb: