Use the following to set up Nextcloud in a Docker Container:
version: '3.9'
services:
mariadb:
image: mariadb:latest
container_name: Nextcloud-DB
security_opt:
- no-new-privileges:true
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-read-only-compressed=OFF
environment:
- PUID=1000
- PGID=1000
- MYSQL_ROOT_PASSWORD=[PASSWORD]
- MYSQL_PASSWORD=[PASSWORD]
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- TZ=America/Los_Angeles
volumes:
- /volume1/docker/nextcloud/mariadb:/config
restart: on-failure:5
redis:
image: redis:latest
container_name: Nextcloud-REDIS
hostname: nextcloudredis
healthcheck:
test: ["CMD-SHELL", "redis-cli ping || exit 1"]
environment:
- PUID=1000
- PGID=1000
- TZ=America/Los_Angeles
volumes:
- /volume1/docker/nextcloud/redis:/data:rw
restart: on-failure:5
nextcloud:
image: nextcloud:latest
container_name: Nextcloud
ports:
- 9333:80
depends_on:
mariadb:
condition: service_started
redis:
condition: service_healthy
healthcheck:
test: curl -f http://localhost:80/ || exit 1
environment:
- REDIS_HOST=nextcloudredis
- NEXTCLOUD_TRUSTED_DOMAINS=[DOMAIN] 10.0.1.9
- TRUSTED_PROXIES=[DOMAIN] 10.0.1.9
- OVERWRITEHOST=[DOMAIN]
- OVERWRITEPROTOCOL=https
- MYSQL_PASSWORD=[PASSWORD]
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=mariadb
volumes:
- /volume1/docker/nextcloud/html:/var/www/html:rw
- /volume1/docker/nextcloud/custom_apps:/var/www/html/custom_apps:rw
- /volume1/docker/nextcloud/config:/var/www/html/config:rw
- /volume1/docker/nextcloud/data:/var/www/html/data:rw
- /volume1/docker/nextcloud/themes:/var/www/html/themes:rw
restart: on-failure:5
cron:
image: nextcloud:apache
container_name: Nextcloud-CRON
restart: always
volumes:
- /volume1/docker/nextcloud/config:/var/www/html/config:rw
- /volume1/docker/nextcloud/html:/var/www/html:rw
- /volume1/docker/nextcloud/custom_apps:/var/www/html/custom_apps:rw
- /volume1/docker/nextcloud/data:/var/www/html/data:rw
entrypoint: /cron.sh
depends_on:
mariadb:
condition: service_started
redis:
condition: service_started
proxy:
image: 'jc21/nginx-proxy-manager:latest'
container_name: Nextcloud-PROXY
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- /volume1/docker/nextcloud/proxy/data:/data
- /volume1/docker/nextcloud/proxy/letsencrypt:/etc/letsencryptSource
https://github.com/docker/awesome-compose/tree/master/nextcloud-redis-mariadb