Files
nextcloud/docker/docker-compose.yml

108 lines
3.2 KiB
YAML

############################################################
# #
# ________ ___ #
# / ____/ |/ / /\_/\ * #
# / / / /|_/ / ( o.o ) #
# / /___/ / / / > ^ < #
# \____/_/ /_/ _| |_ #
# #
# Maria DB server + backup container for Nextcloud #
# Author: Corrado Mulas <tlc(at)mulas.me> #
# #
# No rights reserved 2026 #
# * lil' bastard fiber eater #
############################################################
services:
db:
container_name: nextcloud-db
image: mariadb:${ENV_MARIADB_VERSION:-11.8-ubi9}
volumes:
- ${ENV_BASE_DIR}/mariadb/data:/var/lib/mysql
- ${ENV_BASE_DIR}/mariadb/config:/etc/mysql/conf.d
- ${ENV_BASE_DIR}/mariadb/socket:/var/run/mysqld
networks:
- nextcloud_cts
ports:
- "3306:3306"
restart: always
secrets:
- mysql_root_password
- mysql_app_password
environment:
- MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql_root_password
- MYSQL_PASSWORD_FILE=/run/secrets/mysql_app_password
- MYSQL_USER=${ENV_MYSQL_USER}
- MYSQL_DATABASE=${ENV_MYSQL_DATABASE}
- MYSQL_ALLOW_EMPTY_PASSWORD=no
healthcheck:
test: mysqladmin ping -h 127.0.0.1 -u $$MYSQL_USER --password=$$MYSQL_PASSWORD
redis:
container_name: nextcloud-redis
image: redis:${ENV_REDIS_VERSION:-7.4.9-alpine}
volumes:
- ${ENV_BASE_DIR}/redis/data:/data
- ${ENV_BASE_DIR}/redis/config:/usr/local/etc/redis
- ${ENV_BASE_DIR}/redis/socket:/var/run/redis
networks:
- nextcloud_cts
ports:
- "6379:6379"
restart: always
memcached:
container_name: nextcloud-memcached
image: memcached:${ENV_MEMCACHED_VERSION:-alpine3.23}
volumes:
- ${ENV_BASE_DIR}/memcached/data:/data
- ${ENV_BASE_DIR}/memcached/config:/etc/memcached.conf
- ${ENV_BASE_DIR}/memcached/socket:/var/run/memcached
networks:
- nextcloud_cts
ports:
- "11211:11211"
restart: always
backup:
container_name: nextcloud-backup
image: databack/mysql-backup:${ENV_BACKUP_VERSION:-1.2.0}
networks:
- nextcloud_cts
restart: always
secrets:
- mysql_root_password
environment:
- DB_SERVER=db
- DB_PORT=3306
- DB_USER=root
- DB_PASS_FILE=/run/secrets/mysql_root_password
- DB_DUMP_CRON=0 */6 * * *
- DB_DUMP_RETENTION=28
- DB_DUMP_TARGET=s3://${ENV_BACKUP_S3_BUCKET}/${ENV_BACKUP_S3_PREFIX}
- AWS_ACCESS_KEY_ID=${ENV_BACKUP_S3_ACCESS_KEY}
- AWS_SECRET_ACCESS_KEY=${ENV_BACKUP_S3_SECRET_KEY}
- AWS_DEFAULT_REGION=${ENV_BACKUP_S3_REGION}
- AWS_ENDPOINT_URL=${ENV_BACKUP_S3_ENDPOINT}
# secret files on server
secrets:
mysql_root_password:
file: /opt/nextcloud/secrets/mariadb_root_password.txt
mysql_app_password:
file: /opt/nextcloud/secrets/mariadb_app_password.txt
# default network for this docker stack
networks:
nextcloud_cts:
driver: bridge