version: '3' networks: default: external: name: nextcloud_net services: nextcloud-db: image: mariadb:latest container_name: nextcloud-db hostname: nextcloud-db command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb_read_only_compressed=OFF restart: unless-stopped env_file: .env volumes: - db:/var/lib/mysql phpmyadmin: image: phpmyadmin:latest container_name: nextcloud-db-web links: - nextcloud-db:db environment: PMA_HOST: db PMA_PORT: 3306 PMA_ARBITRARY: 1 restart: unless-stopped ports: - 8081:80 nextcloud-redis: image: redis:alpine container_name: nextcloud-redis hostname: nextcloud-redis restart: unless-stopped nextcloud-app: image: nextcloud:fpm-alpine container_name: nextcloud-app hostname: nextcloud-app restart: unless-stopped env_file: .env environment: - MYSQL_HOST=nextcloud-db - REDIS_HOST=nextcloud-redis - NEXTCLOUD_DATA_DIR=/var/www/data - OVERWRITEPROTOCOL=https - OVERWRITECLIURL=${NEXTCLOUD_DOMAIN} depends_on: - nextcloud-db - nextcloud-redis volumes: - src:/var/www/html - data:/var/www/data nextcloud-web: image: caddy:latest container_name: nextcloud-web hostname: nextcloud-web restart: unless-stopped ports: - 8080:80 volumes: - ./.Caddyfile:/etc/caddy/Caddyfile - src:/var/www/html:ro links: - nextcloud-app collabora: image: collabora/code:latest container_name: nextcloud-collabora restart: unless-stopped volumes: # make sure these exist on your host - /etc/localtime:/etc/localtime - /etc/timezone:/etc/timezone ports: - "9980:9980" environment: - 'server_name=${NEXTCLOUD_DOMAIN}' - 'dictionaries=${COLLABRA_DICTIONARIES:-en_US}' - extra_params=--o:ssl.enable=true --o:ssl.termination=false cap_add: - MKNOD tty: true # nextcloud-cron: # image: nextcloud:fpm-alpine # container_name: nextcloud-cron # hostname: nextcloud-cron # restart: unless-stopped # volumes: # - ./nextcloud-data/:/var/www/html # entrypoint: /cron.sh # depends_on: # - nextcloud-db # - nextcloud-redis # if bindings are not desired then comment out (or remove) driver and driveropts for a volume volumes: db: driver: local driver_opts: o: bind type: none device: ${HOST_NEXTCLOUD_PARENT_DIR}/nextcloud/db src: driver: local driver_opts: o: bind type: none device: ${HOST_NEXTCLOUD_PARENT_DIR}/nextcloud/src data: driver: local driver_opts: o: bind type: none device: ${HOST_NEXTCLOUD_PARENT_DIR}/nextcloud/user-files