services: radicale: container_name: radicale image: docker.io/tomsquest/docker-radicale:3.5.4.0 restart: unless-stopped init: true read_only: true cap_add: - CHOWN - KILL - SETGID - SETUID cap_drop: - ALL security_opt: - no-new-privileges:true deploy: resources: limits: memory: 256M pids: 50 labels: - traefik.enable=true - traefik.http.routers.radicale.rule=Host(`${TRAEFIK_DOMAIN}`) - traefik.http.routers.radicale.entrypoints=${TRAEFIK_ENTRYPOINT} - traefik.http.services.radicale.loadbalancer.server.port=5232 volumes: - ${APPDATA_PATH}/radicale/data:/data - ${APPDATA_PATH}/radicale/config:/config:ro ports: - ${PORT}:5232 networks: - frontend healthcheck: test: curl -f http://127.0.0.1:5232 || exit 1 interval: 10s timeout: 5s retries: 3 start_period: 10s networks: frontend: external: true