version: '2' services: traefik: image: "traefik:v2.2" ports: - "443:443" volumes: - "./traefik.yaml:/etc/traefik/traefik.yaml:ro" - "./letsencrypt:/letsencrypt" - "/var/run/docker.sock:/var/run/docker.sock:ro" restart: unless-stopped db: image: mariadb command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW restart: unless-stopped volumes: - ./db:/var/lib/mysql environment: - MYSQL_RANDOM_ROOT_PASSWORD=yes - MYSQL_PASSWORD - MYSQL_DATABASE - MYSQL_USER redis: image: redis:alpine restart: unless-stopped app: build: ./nextcloud environment: - MYSQL_PASSWORD - MYSQL_DATABASE - MYSQL_USER - MYSQL_HOST=db - NEXTCLOUD_ADMIN_USER - NEXTCLOUD_ADMIN_PASSWORD - "NEXTCLOUD_TRUSTED_DOMAINS=${APP_DOMAIN} ${NEXTCLOUD_TRUSTED_DOMAINS}" - REDIS_HOST=redis - SMTP_HOST - SMTP_SECURE - SMTP_PORT - SMTP_NAME - SMTP_PASSWORD - MAIL_FORM_ADDRESS depends_on: - db - redis volumes: - ./data:/var/www/html - ./custom-php.ini:/usr/local/etc/php/conf.d/zzz-custom.ini labels: - "traefik.enable=true" - "traefik.http.routers.nextcloud.rule=Host(`${APP_DOMAIN}`)" - "traefik.http.routers.nextcloud.entrypoints=websecure" - "traefik.http.routers.nextcloud.tls.certresolver=myresolver" - "traefik.http.routers.nextcloud.middlewares=default-headers@file" restart: unless-stopped cron: image: nextcloud:apache restart: unless-stopped volumes: - ./data:/var/www/html entrypoint: /cron.sh depends_on: - db - redis