version: '3'
services:
nc_db:
image: mariadb:11.3
networks:
- nc_internal
container_name: nc_db
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed
restart: always
labels:
- "com.centurylinklabs.watchtower.enable=false"
volumes:
- nc_db_v2:/var/lib/mysql:Z
env_file:
- stack.env
nc_redis:
image: redis:alpine
networks:
- nc_internal
hostname: redis
container_name: nc_redis
restart: always
nc_app:
image: nextcloud:28-fpm-alpine
networks:
- nc_internal
restart: always
hostname: nc_app
container_name: nc_app
volumes:
- nextcloud_v2:/var/www/html:z
- /dev/shm/nextcloud/ramdisk:/ramdisk
env_file:
- stack.env
labels:
- "com.centurylinklabs.watchtower.enable=false"
depends_on:
- nc_db
- nc_redis
nc_web:
image: nginx:alpine
hostname: nc_web
container_name: nc_web
restart: always
networks:
- proxy
- nc_internal
volumes:
- nextcloud_v2:/var/www/html:z,ro
- /opt/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- /dev/shm/nginx:/dev/shm/
labels:
- "traefik.enable=true"
- "traefik.http.routers.nextcloud.rule=Host(`example.com`)"
- "traefik.http.routers.nextcloud.service=nextcloud"
- "traefik.http.routers.nextcloud.entrypoints=websecure"
- "traefik.http.services.nextcloud.loadbalancer.server.port=80"
- "traefik.http.routers.nextcloud.tls=true"
- "traefik.http.routers.nextcloud.tls.certresolver=cloudflare"
- "traefik.http.services.nextcloud.loadbalancer.passhostheader=true"
- "traefik.http.routers.nextcloud.middlewares=compresstraefik,redirect-to-https,nextcloud-redirectregex1,nextcloud-redirectregex2"
- "traefik.http.middlewares.compresstraefik.compress=true"
- "traefik.docker.network=proxy"
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
- "traefik.http.middlewares.redirect-to-https.redirectscheme.permanent=true"
- "traefik.http.routers.redir-to-https.entrypoints=web"
- "traefik.http.routers.redir-to-https.rule=Host(`example.com`)"
- "traefik.http.middlewares.nextcloud-redirectregex1.redirectregex.permanent=true"
- "traefik.http.middlewares.nextcloud-redirectregex1.redirectregex.regex=https?://([^/]*)/.well-known/(card|cal)dav"
- "traefik.http.middlewares.nextcloud-redirectregex1.redirectregex.replacement=https://$${1}/remote.php/dav/"
- "traefik.http.middlewares.nextcloud-redirectregex2.redirectregex.permanent=true"
- "traefik.http.middlewares.nextcloud-redirectregex2.redirectregex.regex=https?://([^/]*)(/.well-known[^#]*)"
- "traefik.http.middlewares.nextcloud-redirectregex2.redirectregex.replacement=https://$${1}/index.php$${2}"
depends_on:
- nc_app
nc_cron:
image: nextcloud:28-fpm-alpine
networks:
- nc_internal
container_name: nc_cron
restart: always
volumes:
- nextcloud_v2:/var/www/html:z
entrypoint: /cron.sh
labels:
- "com.centurylinklabs.watchtower.enable=false"
depends_on:
- nc_db
- nc_redis
volumes:
nc_db_v2:
nextcloud_v2:
networks:
proxy:
external: true
nc_internal:
enable_ipv6: true
ipam:
config:
- subnet: 2001:0DB9::/112
Comments
0 B
|👍
/👎
0 B
|👍
/👎