81 lines
2.7 KiB
YAML
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
|