services: caddy: image: caddy:2.9.1 restart: unless-stopped cap_add: - NET_ADMIN ports: - "80:80" - "443:443" - "443:443/udp" volumes: - $PWD/bash/caddy:/etc/caddy - $PWD/bash/certs:/etc/ssl web: build: dockerfile: docker/Dockerfile.web context: . depends_on: app: condition: service_healthy redis: image: redis:latest volumes: - redis_data:/data command: redis-server --maxmemory 512MB restart: unless-stopped app: build: dockerfile: docker/Dockerfile.app context: . volumes: - ./:/var/www depends_on: database: condition: service_healthy worker: build: dockerfile: docker/Dockerfile.worker context: . volumes: - ./:/app - ./var/downloads/movies:/var/download/movies - ./var/downloads/tvshows:/var/download/tvshows command: -v --time-limit=3600 --limit=10 env_file: - .env depends_on: app: condition: service_healthy scheduler: build: dockerfile: docker/Dockerfile.scheduler context: . volumes: - ./:/var/www - ./var/download:/var/download command: -vv --time-limit=3600 depends_on: app: condition: service_healthy mercure: image: dunglas/mercure restart: unless-stopped ports: - "3000:80" environment: SERVER_NAME: ':80' MERCURE_PUBLISHER_JWT_KEY: '!ChangeThisMercureHubJWTSecretKey!' MERCURE_SUBSCRIBER_JWT_KEY: '!ChangeThisMercureHubJWTSecretKey!' MERCURE_EXTRA_DIRECTIVES: | cors_origins * anonymous command: /usr/bin/caddy run --config /etc/caddy/dev.Caddyfile volumes: - mercure_data:/data - mercure_config:/config database: image: mariadb:10.11.2 ports: - "3306:3306" volumes: - mysql:/var/lib/mysql environment: MYSQL_DATABASE: app MYSQL_USERNAME: app MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: password healthcheck: test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ] timeout: 10s retries: 10 adminer: image: adminer ports: - "8081:8080" volumes: mysql: mercure_data: mercure_config: redis_data: