cors-dev-setup
Set up or migrate a Pimcore project/bundle to use the cors/dev Docker Compose development environment
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Set up or migrate a Pimcore project/bundle to use the cors/dev Docker Compose development environment
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Set up Contributor License Agreement (CLA) for CORS open source repositories on GitHub
Upgrade Pimcore 11 projects and bundles to Pimcore 12 - composer, config, PHP 8.3, Symfony 7, Docker, CI/CD, cors/dev, cors/saml
Extend and customize CoreShop eCommerce - custom rules, payment gateways, entity extensions, workflows, Studio v2 plugins, notifications
Pimcore platform development - bundles, data objects, class definitions, CoreExtensions, events, workflows, documents, assets
Migrate any Pimcore ExtJS admin UI to Studio v2 React/TypeScript - panels, grids, forms, trees, stores, plugins
Build Pimcore Studio v2 features - React/TypeScript, Ant Design, plugins, modules, dynamic types, DI container, widgets
| name | cors-dev-setup |
| description | Set up or migrate a Pimcore project/bundle to use the cors/dev Docker Compose development environment |
| allowed-tools | Read, Grep, Glob, Bash, Edit, Write, Task |
You are helping set up or migrate a Pimcore project or bundle to use the cors/dev Docker Compose development environment.
The cors/dev package provides a standardized Docker Compose setup for CORS Pimcore projects and bundles. Instead of maintaining a full docker-compose.yaml with all service definitions locally, projects include the shared docker-compose-dev.yaml from cors/dev.
Check that cors/dev is in require-dev:
"require-dev": {
"cors/dev": "12.x-dev"
}
If it's missing, add it.
Also ensure the repositories section includes the private packagist and disables the public one:
"repositories": {
"packagist.org": false,
"private-packagist": {
"type": "composer",
"url": "https://repo.packagist.com/cors/"
}
}
This is required because cors/dev and other CORS packages are hosted on the private packagist instance.
Replace the existing docker-compose.yaml with the minimal include-based version:
name: ${DOCKER_PROJECT_NAME:?error}
include:
- vendor/cors/dev/docker-compose-dev.yaml
This replaces all manually defined services (php, php-debug, nginx, db, redis, supervisord, mercure, opensearch, rabbitmq, etc.) with the shared cors/dev definitions.
Remove from the old docker-compose.yaml:
version: '3.4' or any version declaration (not needed with modern Docker Compose)services: definitions (replaced by the include)networks: definitions (cors_dev external network is defined in cors/dev)volumes: definitions (defined in cors/dev)container_name: valuesgit.e-conomix.at:5050/cors/docker/php-alpine-*DOCKER_PROJECT_NAME)Add the Docker configuration variables to the beginning of the existing .env file. Do NOT replace existing entries - add the Docker block before them:
###> docker ###
DOCKER_PROJECT_NAME=<project-name>
DOCKER_ALPINE_VERSION=3.22
DOCKER_PHP_VERSION=8.3
DOCKER_BASE_IMAGE=8.0-latest
###< docker ###
Keep all existing .env entries (APP_ENV, APP_DEBUG, PIMCORE_KERNEL_CLASS, etc.) as they are.
Variable reference:
| Variable | Description | Example |
|---|---|---|
DOCKER_PROJECT_NAME | Kebab-case project identifier. Used for container names, traefik routing (<name>.localhost), network aliases | cors-prometheus |
DOCKER_PHP_VERSION | PHP version for the Docker images | 8.3 or 8.4 |
DOCKER_BASE_IMAGE | cors/docker base image version tag | 8.0-latest |
DOCKER_ALPINE_VERSION | Alpine Linux version for PHP images | 3.22 |
These files are now provided by cors/dev and must be removed:
.docker/nginx.conf - cors/dev provides its own nginx config at vendor/cors/dev/.docker/nginx.conf with standardized upstream names (fpm / fpm-debug instead of project-specific names like php-cors-prometheus).docker/php.ini - PHP config is baked into the cors/dev Docker images. Only keep if it has truly project-specific settings beyond the standard upload_max_filesize, post_max_size, memory_limit.docker/xdebug.ini - Xdebug configuration is handled by the cors/dev debug image.docker/composer-setup.sh or bin/composer-setup.sh - Initial composer install is handled differently with cors/dev (use docker compose run php composer install instead).docker/supervisord/*.conf - Supervisord worker configs are project-specific (define which messenger transports to consume). Keep these..docker/rabbitmq.conf - If present and has project-specific RabbitMQ config, keep itBefore deleting, verify the file only has default/standard content:
# Standard php.ini (safe to delete):
# upload_max_filesize = 512M
# post_max_size = 512M
# memory_limit = 512M
# Standard xdebug.ini (safe to delete):
# xdebug.mode=develop,debug
# xdebug.client_host=172.17.0.1
# xdebug.start_with_request=yes
After composer update (to install cors/dev), verify the setup works:
docker compose config # validates the compose file
docker compose up -d # starts all services
The shared docker-compose-dev.yaml includes these services:
| Service | Image | Purpose |
|---|---|---|
db | mysql:8 | Database (alias: database on default network, DOCKER_PROJECT_NAME on cors_dev) |
redis | redis:alpine | Cache/Session storage (password: password) |
php | ghcr.io/cors-gmbh/pimcore-docker/php-fpm | PHP-FPM (alias: fpm) |
php-debug | ghcr.io/cors-gmbh/pimcore-docker/php-fpm-debug | PHP-FPM with Xdebug (alias: fpm-debug) |
supervisord | ghcr.io/cors-gmbh/pimcore-docker/php-supervisord | Background workers |
nginx | nginx:stable-alpine | Web server with Traefik labels |
mercure | dunglas/mercure | Real-time notifications (Pimcore Studio) |
opensearch | opensearchproject/opensearch:2.13.0 | Search engine (Generic Data Index) |
opensearch-dashboards | opensearchproject/opensearch-dashboards:2.13.0 | OpenSearch UI |
rabbitmq | rabbitmq:3-management | Message queue (scale: 0 by default) |
default network (project-scoped via name: in compose file)cors_dev external network is used for Traefik integrationDOCKER_PROJECT_NAME on cors_dev network and database on default networkDOCKER_PROJECT_NAME for routing: <name>.localhost and *.<name>.localhostcors/dev nginx config uses standardized upstream names:
fpm (port 9000) - regular PHP-FPMfpm-debug (port 9000) - Xdebug-enabled PHP-FPM (activated via XDEBUG_SESSION cookie)This is different from old setups that used project-specific names like php-<project> / php-debug-<project>.
The vendor/cors/dev/.install.env provides default Pimcore installation parameters (used by php/php-debug via env_file):
admin / admindatabasepimcore / pimcorepimcorecors/dev defines these named volumes:
database - MySQL dataredis - Redis datarabbitmq - RabbitMQ dataopensearch - OpenSearch data