services: nextcloud: image: nextcloud:latest restart: unless-stopped ports: - "127.0.0.1:8888:80" volumes: - ./data:/var/www/html environment: # Database - MYSQL_HOST=db - MYSQL_DATABASE=${MYSQL_DATABASE:-nextcloud} - MYSQL_USER=${MYSQL_USER} - MYSQL_PASSWORD=${MYSQL_PASSWORD} # Domaine - NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_DOMAIN} - TRUSTED_PROXIES=${TRUSTED_PROXIES:-} - OVERWRITEPROTOCOL=${OVERWRITE_PROTOCOL:-http} - OVERWRITEHOST=${OVERWRITE_HOST:-} - OVERWRITECLIURL=${OVERWRITE_CLI_URL:-} # Redis - REDIS_HOST=redis - REDIS_HOST_PASSWORD=${REDIS_HOST_PASSWORD} # PHP - PHP_MEMORY_LIMIT=4096M - PHP_UPLOAD_MAX_FILESIZE=2G - PHP_POST_MAX_SIZE=2G - PHP_MAX_EXECUTION_TIME=1800 - PHP_MAX_INPUT_TIME=1800 # Apache - APACHE_BODY_LIMIT=2147483648 healthcheck: test: ["CMD", "curl", "-f", "http://localhost/status.php"] interval: 30s timeout: 10s retries: 3 depends_on: db: condition: service_healthy redis: condition: service_started networks: - nextcloud-net - traefik-net redis: image: redis:alpine restart: unless-stopped command: redis-server --requirepass ${REDIS_HOST_PASSWORD} --maxmemory 512mb --maxmemory-policy allkeys-lru networks: - nextcloud-net cron: image: nextcloud:latest restart: always volumes_from: - nextcloud entrypoint: /cron.sh depends_on: - nextcloud - db - redis networks: - nextcloud-net db: image: mariadb:10.11 restart: unless-stopped volumes: - ./db:/var/lib/mysql - ./db-config/my.cnf:/etc/mysql/conf.d/custom.cnf:ro environment: - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_USER} - MYSQL_DATABASE=nextcloud - MYSQL_USER=${MYSQL_USER} - MYSQL_PASSWORD=${MYSQL_PASSWORD} healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] interval: 10s timeout: 5s retries: 3 networks: - nextcloud-net networks: nextcloud-net: driver: bridge traefik-net: external: true