services: db: image: mariadb:10.6 container_name: nextcloud-db restart: unless-stopped command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW environment: TZ: ${TZ} MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} volumes: - ./db:/var/lib/mysql networks: - nextcloud redis: image: redis:7-alpine container_name: nextcloud-redis restart: unless-stopped command: redis-server --save 60 1 --loglevel warning volumes: - ./redis:/data networks: - nextcloud app: image: nextcloud:apache container_name: nextcloud-app restart: unless-stopped depends_on: - db - redis environment: TZ: ${TZ} MYSQL_HOST: db MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} NEXTCLOUD_ADMIN_USER: ${NEXTCLOUD_ADMIN_USER} NEXTCLOUD_ADMIN_PASSWORD: ${NEXTCLOUD_ADMIN_PASSWORD} REDIS_HOST: redis NEXTCLOUD_TRUSTED_DOMAINS: ${NEXTCLOUD_DOMAIN} TRUSTED_PROXIES: ${TRUSTED_PROXIES} OVERWRITEHOST: ${NEXTCLOUD_DOMAIN} OVERWRITEPROTOCOL: https OVERWRITECLIURL: https://${NEXTCLOUD_DOMAIN} volumes: - ./nextcloud:/var/www/html networks: - nextcloud - proxy_net expose: - "80" cron: image: nextcloud:apache container_name: nextcloud-cron restart: unless-stopped depends_on: - db - redis entrypoint: /cron.sh environment: TZ: ${TZ} MYSQL_HOST: db MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} REDIS_HOST: redis volumes: - ./nextcloud:/var/www/html networks: - nextcloud networks: nextcloud: proxy_net: external: true