services: nextcloud-db: image: postgres:16.11-alpine container_name: nextcloud-db command: ["postgres", "-c", "shared_buffers=512MB", "-c", "work_mem=16MB"] restart: always volumes: - db:/var/lib/postgresql/data env_file: - db.env networks: - nextcloud nextcloud-redis: image: redis:8.4.0-alpine container_name: nextcloud-redis restart: always networks: - nextcloud nextcloud-app: image: nextcloud:32.0.5-fpm-alpine container_name: nextcloud-app depends_on: - nextcloud-db - nextcloud-redis restart: always volumes: - nextcloud:/var/www/html - ./app/config:/var/www/html/config - ./app/custom_apps:/var/www/html/custom_apps - ./app/data:/var/www/html/data - ./app/themes:/var/www/html/themes - ./zz-php-fpm-custom.conf:/usr/local/etc/php-fpm.d/zz-php-custom.conf - ./opcache-recommended.ini:/usr/local/etc/php/conf.d/opcache-recommended.ini env_file: - app.env networks: - nextcloud nextcloud-web: image: caddy:2.10.2-alpine container_name: nextcloud-web restart: always volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - nextcloud:/var/www/html:ro - ./app/custom_apps:/var/www/html/custom_apps:ro depends_on: - nextcloud-app networks: - nextcloud - reverse-proxy nextcloud-cron: image: nextcloud:32.0.5-fpm-alpine container_name: nextcloud-cron depends_on: - nextcloud-app restart: always entrypoint: /cron.sh volumes_from: - nextcloud-app networks: - nextcloud volumes: nextcloud: db: networks: nextcloud: reverse-proxy: external: true