services: db: image: mariadb:10.11 container_name: nextcloud-db restart: always command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed volumes: - db_data:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - MYSQL_PASSWORD=${MYSQL_PASSWORD} - MYSQL_DATABASE=${MYSQL_DATABASE} - MYSQL_USER=${MYSQL_USER} networks: - nextcloud-network redis: image: redis:alpine container_name: nextcloud-redis restart: always networks: - nextcloud-network nextcloud: image: nextcloud:latest container_name: nextcloud-app restart: always ports: - "${NEXTCLOUD_PORT}:80" volumes: - nextcloud_data:/var/www/html environment: - MYSQL_PASSWORD=${MYSQL_PASSWORD} - MYSQL_DATABASE=${MYSQL_DATABASE} - MYSQL_USER=${MYSQL_USER} - MYSQL_HOST=db - REDIS_HOST=redis - NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER} - NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD} - NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_TRUSTED_DOMAINS} - OVERWRITEPROTOCOL=${OVERWRITEPROTOCOL} - OVERWRITEHOST=${OVERWRITEHOST} depends_on: - db - redis networks: - nextcloud-network collabora: image: collabora/code:latest container_name: nextcloud-collabora restart: always ports: - "${COLLABORA_PORT}:9980" environment: - domain=${COLLABORA_DOMAIN} - username=${COLLABORA_USERNAME} - password=${COLLABORA_PASSWORD} - extra_params=--o:ssl.enable=false --o:ssl.termination=true - dictionaries=${COLLABORA_DICTIONARIES} cap_add: - MKNOD networks: - nextcloud-network cron: image: nextcloud:latest container_name: nextcloud-cron restart: always volumes: - nextcloud_data:/var/www/html entrypoint: /cron.sh depends_on: - db - redis networks: - nextcloud-network volumes: db_data: driver: local nextcloud_data: driver: local networks: nextcloud-network: driver: bridge