volumes: redis-data: {} mysql-data: {} services: web: build: context: ./ dockerfile: docker/php/Dockerfile target: development environment: - APP_DOMAIN=localhost:12380 - APP_PROTOCOL=http - SITE_SUBDOMAIN=stdparteitag - DB_HOST=mysql - DB_NAME=antragsgruen - DB_USER=${DB_USER:?Please set DB_USER in .env} - DB_PASSWORD=${DB_PASSWORD:?Please set DB_PASSWORD in .env} - REDIS_HOST=redis - MAILER_DISABLED=true - MAIL_FROM_EMAIL=noreply@example.org - MAIL_FROM_NAME=Motion Tools - RANDOM_SEED=${RANDOM_SEED} - RABBITMQ_HOST=rabbitmq - WEASYPRINT_PATH=/usr/bin/weasyprint - QPDF_PATH=/usr/bin/qpdf - IMAGE_MAGICK_PATH=/usr/bin/convert - OTEL_PHP_AUTOLOAD_ENABLED=true - OTEL_SERVICE_NAME=antragsgruen - OTEL_TRACES_EXPORTER=otlp - OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf - OTEL_EXPORTER_OTLP_ENDPOINT=http://otlp-collector:4318 - OTEL_PROPAGATORS=baggage,tracecontext - BACKGROUND_JOBS_NOTIFICATIONS=true - JS_ERROR_TRACKING=otel://js.error volumes: - "./:/var/www/antragsgruen" - "../antragsgruen-plugins/:/var/www/antragsgruen-plugins/:ro" nginx: image: nginx:latest ports: - "12380:80" - "12443:443" volumes: - "./:/var/www/antragsgruen:ro" - "./docker/nginx:/etc/nginx/conf.d" worker: build: context: ./ dockerfile: docker/php/Dockerfile target: development command: /var/www/antragsgruen/yii background-job/run environment: - APP_DOMAIN=localhost:12380 - APP_PROTOCOL=http - SITE_SUBDOMAIN=stdparteitag - DB_HOST=mysql - DB_NAME=antragsgruen - DB_USER=${DB_USER:?Please set DB_USER in .env} - DB_PASSWORD=${DB_PASSWORD:?Please set DB_PASSWORD in .env} - REDIS_HOST=redis - MAILER_DISABLED=true - RANDOM_SEED=${RANDOM_SEED} - BACKGROUND_JOBS_NOTIFICATIONS=true volumes: - "./:/var/www/antragsgruen" - "../antragsgruen-plugins/:/var/www/antragsgruen-plugins/:ro" depends_on: mysql: condition: service_healthy cron: build: context: ./ dockerfile: docker/php/Dockerfile target: development command: sh -c "while true; do /var/www/antragsgruen/yii background-job/cleanup; sleep 86400; done" environment: - DB_HOST=mysql - DB_NAME=antragsgruen - DB_USER=${DB_USER:?Please set DB_USER in .env} - DB_PASSWORD=${DB_PASSWORD:?Please set DB_PASSWORD in .env} volumes: - "./:/var/www/antragsgruen" - "../antragsgruen-plugins/:/var/www/antragsgruen-plugins/:ro" depends_on: mysql: condition: service_healthy mysql: image: mariadb command: --max_allowed_packet=33554432 ports: - "13306:3306" environment: MARIADB_ROOT_PASSWORD: ${DB_PASSWORD:?Please set DB_PASSWORD in .env} MARIADB_DATABASE: antragsgruen volumes: - "mysql-data:/var/lib/mysql" healthcheck: test: [ "CMD", "healthcheck.sh", "--connect", "--innodb_initialized" ] start_period: 3s interval: 3s timeout: 5s retries: 10 redis: image: "redis:7" volumes: - 'redis-data:/data' rabbitmq: image: 'rabbitmq:3-management-alpine' environment: - RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS:?Please set RABBITMQ_DEFAULT_PASS in .env} - RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER:?Please set RABBITMQ_DEFAULT_USER in .env} ports: - "5672:5672" - "15672:15672" profiles: - live vite-watch: build: context: ./ dockerfile: docker/pnpm/Dockerfile volumes: - "./:/var/www/antragsgruen" working_dir: /var/www/antragsgruen command: "pnpm run watch" profiles: - vite-watch pnpm-helper: build: context: ./ dockerfile: docker/pnpm/Dockerfile volumes: - "./:/var/www/antragsgruen" working_dir: /var/www/antragsgruen command: sleep infinity profiles: - pnpm-helper otlp-collector: image: otel/opentelemetry-collector command: ["--config=/etc/otel/collector-config.yml"] ports: - "4317:4317" - "4318:4318" - "55679:55679" volumes: - "./docker/otel/collector-config.yml:/etc/otel/collector-config.yml:ro"