knet-cloud/docker-compose.yml
2025-12-27 00:36:05 +01:00

113 lines
3.6 KiB
YAML

version: "3.9"
services:
nextcloud:
image: nextcloud:${NEXTCLOUD_VERSION:-32-apache}
restart: unless-stopped
depends_on:
- db
- redis
- onlyoffice
environment:
MYSQL_HOST: db
MYSQL_DATABASE: ${MARIADB_DATABASE:-nextcloud}
MYSQL_USER: ${MARIADB_USER:-nextcloud}
MYSQL_PASSWORD: ${MARIADB_PASSWORD?set_mariadb_password}
NEXTCLOUD_ADMIN_USER: ${NEXTCLOUD_ADMIN_USER:-ncadmin}
NEXTCLOUD_ADMIN_PASSWORD: ${NEXTCLOUD_ADMIN_PASSWORD?set_nextcloud_admin_password}
NEXTCLOUD_TRUSTED_DOMAINS: ${NEXTCLOUD_DOMAIN:-cloud.example.com}
OVERWRITEHOST: ${NEXTCLOUD_DOMAIN:-cloud.example.com}
OVERWRITEPROTOCOL: https
REDIS_HOST: redis
REDIS_HOST_PASSWORD: ${REDIS_PASSWORD?generate_redis_password}
PHP_MEMORY_LIMIT: 1G
PHP_UPLOAD_LIMIT: 2G
volumes:
- nextcloud_data:/var/www/html
- nextcloud_apps:/var/www/html/custom_apps
- nextcloud_config:/var/www/html/config
nextcloud-cron:
image: nextcloud:${NEXTCLOUD_VERSION:-32-apache}
restart: unless-stopped
entrypoint: /cron.sh
depends_on:
- db
- redis
environment:
MYSQL_HOST: db
MYSQL_DATABASE: ${MARIADB_DATABASE:-nextcloud}
MYSQL_USER: ${MARIADB_USER:-nextcloud}
MYSQL_PASSWORD: ${MARIADB_PASSWORD?set_mariadb_password}
NEXTCLOUD_ADMIN_USER: ${NEXTCLOUD_ADMIN_USER:-ncadmin}
NEXTCLOUD_ADMIN_PASSWORD: ${NEXTCLOUD_ADMIN_PASSWORD?set_nextcloud_admin_password}
NEXTCLOUD_TRUSTED_DOMAINS: ${NEXTCLOUD_DOMAIN:-cloud.example.com}
OVERWRITEHOST: ${NEXTCLOUD_DOMAIN:-cloud.example.com}
OVERWRITEPROTOCOL: https
REDIS_HOST: redis
REDIS_HOST_PASSWORD: ${REDIS_PASSWORD?generate_redis_password}
PHP_MEMORY_LIMIT: 1G
PHP_UPLOAD_LIMIT: 2G
volumes:
- nextcloud_data:/var/www/html
- nextcloud_apps:/var/www/html/custom_apps
- nextcloud_config:/var/www/html/config
db:
image: mariadb:${MARIADB_VERSION:-11.4}
restart: unless-stopped
command:
- --transaction-isolation=READ-COMMITTED
- --binlog-format=ROW
- --innodb_read_only_compressed=OFF
environment:
MYSQL_DATABASE: ${MARIADB_DATABASE:-nextcloud}
MYSQL_USER: ${MARIADB_USER:-nextcloud}
MYSQL_PASSWORD: ${MARIADB_PASSWORD?set_mariadb_password}
MYSQL_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD?set_mariadb_root_password}
volumes:
- db_data:/var/lib/mysql
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 30s
timeout: 5s
retries: 5
redis:
image: redis:${REDIS_VERSION:-7-alpine}
restart: unless-stopped
command: ["redis-server", "--requirepass", "${REDIS_PASSWORD?generate_redis_password}"]
volumes:
- redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD?generate_redis_password}", "ping"]
interval: 30s
timeout: 5s
retries: 5
onlyoffice:
image: onlyoffice/documentserver:${ONLYOFFICE_VERSION:-8.0}
restart: unless-stopped
environment:
JWT_ENABLED: "true"
JWT_SECRET: ${ONLYOFFICE_JWT_SECRET?generate_onlyoffice_jwt_secret}
JWT_HEADER: Authorization
depends_on:
- redis
volumes:
- onlyoffice_data:/var/www/onlyoffice/Data
- onlyoffice_logs:/var/log/onlyoffice
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost/healthcheck || exit 1"]
interval: 30s
timeout: 10s
retries: 5
volumes:
nextcloud_data:
nextcloud_apps:
nextcloud_config:
db_data:
redis_data:
onlyoffice_data:
onlyoffice_logs: