services: owncloud: image: owncloud/server:11 restart: unless-stopped environment: - OWNCLOUD_DOMAIN=${OWNCLOUD_DOMAIN:?required} - OWNCLOUD_TRUSTED_DOMAINS=${OWNCLOUD_DOMAIN:?required} - OWNCLOUD_PROTOCOL=https - OWNCLOUD_OVERWRITE_PROTOCOL=https - OWNCLOUD_ADMIN_USERNAME=${OWNCLOUD_ADMIN_USERNAME:-admin} - OWNCLOUD_ADMIN_PASSWORD=${OWNCLOUD_ADMIN_PASSWORD:?required} - OWNCLOUD_DB_TYPE=mysql - OWNCLOUD_DB_HOST=db - OWNCLOUD_DB_NAME=${DB_NAME:-owncloud} - OWNCLOUD_DB_USERNAME=${DB_USER:-owncloud} - OWNCLOUD_DB_PASSWORD=${DB_PASSWORD:?required} - OWNCLOUD_MYSQL_UTF8MB4=true - OWNCLOUD_REDIS_ENABLED=true - OWNCLOUD_REDIS_HOST=cache volumes: - owncloud-data:/mnt/data depends_on: db: condition: service_healthy cache: condition: service_healthy healthcheck: test: ["CMD", "/usr/bin/healthcheck"] interval: 30s timeout: 10s retries: 5 # MariaDB for file metadata, users and shares. db: image: mariadb:10.11 restart: unless-stopped command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_bin - --max-allowed-packet=128M - --innodb-log-file-size=64M environment: - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD:?required} - MYSQL_DATABASE=${DB_NAME:-owncloud} - MYSQL_USER=${DB_USER:-owncloud} - MYSQL_PASSWORD=${DB_PASSWORD:?required} - MARIADB_AUTO_UPGRADE=1 volumes: - db-data:/var/lib/mysql healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] interval: 5s timeout: 20s retries: 10 # Redis for file locking and the distributed cache. cache: image: redis:7 restart: unless-stopped command: ["--databases", "1"] volumes: - cache-data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 volumes: owncloud-data: db-data: cache-data: