125 lines
3.9 KiB
YAML
125 lines
3.9 KiB
YAML
version: "3.9"
|
|
|
|
services:
|
|
nextcloud:
|
|
image: nextcloud:${NEXTCLOUD_VERSION:-32-apache}
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
- onlyoffice
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "curl -fsS http://localhost/status.php || exit 1"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
start_period: 90s
|
|
retries: 5
|
|
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
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "runuser -u www-data -- php /var/www/html/occ status >/dev/null 2>&1"]
|
|
interval: 60s
|
|
timeout: 15s
|
|
start_period: 90s
|
|
retries: 3
|
|
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:-9.2}
|
|
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:
|