nxcloud/docker-compose.yml

81 lines
2.7 KiB
YAML

---
services:
nginx:
container_name: nginx-nextcloud
image: nginx:latest
volumes:
- ${NEXTCLOUD_DIR}:/var/www/html
- ${DATA_DIR}:/data
- ./nginx.conf:/etc/nginx/nginx.conf:ro
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik"
- "traefik.http.routers.nginx-http.rule=Host(${DOMAIN})"
- "traefik.http.routers.nginx-http.entrypoints=web"
- "traefik.http.routers.nginx-http.middlewares=nextcloud-https-redirect@docker,nc-header@docker,nextcloud_redirectregex@docker${TRAEFIK_CUSTOM_MIDDLEWARES}"
- "traefik.http.routers.nginx-https.rule=Host(${DOMAIN})"
- "traefik.http.routers.nginx-https.tls=true"
- "traefik.http.routers.nginx-https.tls.certresolver=myresolver"
- "traefik.http.routers.nginx-https.entrypoints=websecure"
- "traefik.http.routers.nginx-https.middlewares=nc-header@docker,nextcloud_redirectregex@docker${TRAEFIK_CUSTOM_MIDDLEWARES}"
- "traefik.http.middlewares.nc-header.headers.stsSeconds=15552001"
# MIDDLEWARES
- "traefik.http.middlewares.nextcloud_redirectregex.redirectregex.permanent=true"
- "traefik.http.middlewares.nextcloud_redirectregex.redirectregex.regex=https://(.*)/.well-known/(?:card|cal)dav"
- "traefik.http.middlewares.nextcloud_redirectregex.redirectregex.replacement=https://$${1}/remote.php/dav"
# HTTP->HTTPS redirect
- "traefik.http.middlewares.nextcloud-https-redirect.redirectscheme.scheme=https"
- "traefik.http.middlewares.nextcloud-https-redirect.redirectscheme.permanent=true"
# Traefik service
- "traefik.http.routers.nginx-https.service=nextcloud-service"
- "traefik.http.services.nextcloud-service.loadbalancer.server.port=80"
networks:
- nextcloud
- traefik
depends_on:
- php-fpm-nextcloud
- redis-nextcloud
- mariadb-nextcloud
php-fpm-nextcloud:
container_name: php-fpm-nextcloud
build: ./php-fpm
volumes:
- ${NEXTCLOUD_DIR}:/var/www/html
- ${DATA_DIR}:/data
networks:
- nextcloud
mariadb-nextcloud:
container_name: mariadb-nextcloud
image: mariadb
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: always
volumes:
- ./mariadb:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASS}
- MYSQL_PASSWORD=${MARIADB_PASS}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
networks:
- nextcloud
redis-nextcloud:
container_name: redis-nextcloud
image: redis:latest
restart: unless-stopped
networks:
- nextcloud
networks:
nextcloud:
driver: bridge
traefik:
external: true