x-env-aliases: - &DEFAULT_BUILD_ARGS PHP_TAG: "${PHP_VERSION:-8.3}-cli-alpine${ALPINE_VERSION:-3.21}" PHP_API_VERSION: "${PHP_API_VERSION:-20230831}" COMPOSER_ARGS: "${COMPOSER_ARGS:-install}" COMPOSER_AUTH: "${COMPOSER_AUTH:-}" SWOOLE_EXTENSION: "${SWOOLE_EXTENSION:-openswoole}" SWOOLE_VERSION: "${SWOOLE_VERSION:-v26.2.0}" COMPOSER_TAG: "${COMPOSER_TAG:-2.9.5}" XDEBUG_TAG: "${XDEBUG_TAG:-3.5.0}" volumes: coverage: {} services: releaser: image: "docker.io/symfonywithswoole/release-version-script:0.5.0" environment: DEBUG: "${DEBUG:-0}" DRY_RUN: "${DRY_RUN:-1}" GH_REPOSITORY: "${GH_REPOSITORY:-symfony-swoole/swoole-bundle}" GH_COMMITER_NAME: "${GH_COMMITER_NAME:-symfony-swoole-bot}" GH_COMMITER_EMAIL: "${GH_COMMITER_EMAIL:-147276322+symfony-swoole-bot@users.noreply.github.com}" GH_COMMITER_SIGNING_KEY: "${GH_COMMITER_SIGNING_KEY:-xxxx}" GH_COMMITER_PGP_PRIVATE_KEY: "${GH_COMMITER_PGP_PRIVATE_KEY:-xxxx}" GH_TOKEN: "${GH_TOKEN:-xxxxxxxx}" GH_RELEASE_DRAFT: "${GH_RELEASE_DRAFT:-false}" GH_RELEASE_PRERELEASE: "${GH_RELEASE_PRERELEASE:-false}" volumes: - "./.git:/usr/src/app/.git:rw" - "./CHANGELOG.md:/usr/src/app/CHANGELOG.md:rw" cli: image: "${REGISTRY:-docker.io}/${NAMESPACE:-symfonywithswoole}/${IMAGE:-swoole-bundle}-cli:${TAG:-local}" container_name: swoole-bundle-cli build: context: . target: cli args: <<: *DEFAULT_BUILD_ARGS environment: DATABASE_HOST: 'db' security_opt: - seccomp=unconfined ulimits: # io_uring pins its rings against the locked-memory limit, and swoole aborts the whole # process when a ring cannot be created. Docker's 8MB default is not enough for a suite # running several servers at once. See .circleci/config.yml for the full story. memlock: -1 ports: - 9501:9501 composer: image: "${REGISTRY:-docker.io}/${NAMESPACE:-symfonywithswoole}/${IMAGE:-swoole-bundle}-composer:${TAG:-local}" build: context: . target: composer args: <<: *DEFAULT_BUILD_ARGS environment: DATABASE_HOST: 'db' ci: image: "${REGISTRY:-docker.io}/${NAMESPACE:-symfonywithswoole}/${IMAGE:-swoole-bundle}-ci:${TAG:-local}" build: context: . target: ci args: <<: *DEFAULT_BUILD_ARGS environment: DATABASE_HOST: 'db' security_opt: - seccomp=unconfined ulimits: # io_uring pins its rings against the locked-memory limit, and swoole aborts the whole # process when a ring cannot be created. Docker's 8MB default is not enough for a suite # running several servers at once. See .circleci/config.yml for the full story. memlock: -1 coverage-xdebug: image: "${REGISTRY:-docker.io}/${NAMESPACE:-symfonywithswoole}/${IMAGE:-swoole-bundle}-coverage-xdebug:${TAG:-local}" build: context: . target: coverage-xdebug args: <<: *DEFAULT_BUILD_ARGS environment: DATABASE_HOST: 'db' security_opt: - seccomp=unconfined ulimits: # io_uring pins its rings against the locked-memory limit, and swoole aborts the whole # process when a ring cannot be created. Docker's 8MB default is not enough for a suite # running several servers at once. See .circleci/config.yml for the full story. memlock: -1 coverage-pcov: image: "${REGISTRY:-docker.io}/${NAMESPACE:-symfonywithswoole}/${IMAGE:-swoole-bundle}-coverage-pcov:${TAG:-local}" build: context: . target: coverage-pcov args: <<: *DEFAULT_BUILD_ARGS environment: DATABASE_HOST: 'db' security_opt: - seccomp=unconfined ulimits: # io_uring pins its rings against the locked-memory limit, and swoole aborts the whole # process when a ring cannot be created. Docker's 8MB default is not enough for a suite # running several servers at once. See .circleci/config.yml for the full story. memlock: -1 coverage-xdebug-feature-with-retry: image: "${REGISTRY:-docker.io}/${NAMESPACE:-symfonywithswoole}/${IMAGE:-swoole-bundle}-coverage-xdebug:${TAG:-local}" entrypoint: - /bin/bash command: - tests/run-feature-tests-code-coverage.sh build: context: . target: coverage-xdebug args: <<: *DEFAULT_BUILD_ARGS environment: DATABASE_HOST: 'db' security_opt: - seccomp=unconfined ulimits: # io_uring pins its rings against the locked-memory limit, and swoole aborts the whole # process when a ring cannot be created. Docker's 8MB default is not enough for a suite # running several servers at once. See .circleci/config.yml for the full story. memlock: -1 merge-code-coverage: image: "${REGISTRY:-docker.io}/${NAMESPACE:-symfonywithswoole}/${IMAGE:-swoole-bundle}-merge-code-coverage:${MERGE_COVERAGE_TAG:-local}" command: merge-code-coverage build: context: . target: merge-code-coverage args: <<: *DEFAULT_BUILD_ARGS db: container_name: swoole-bundle-db image: mysql:8 environment: MYSQL_ROOT_PASSWORD: root MYSQL_USER: user MYSQL_PASSWORD: pass MYSQL_DATABASE: db volumes: # Lets the test user create the per-worker databases parallel feature tests need. Only runs while # the data directory is still empty, so an existing volume needs the grant applying by hand - see # CONTRIBUTING.md. - ./docker/mysql/init:/docker-entrypoint-initdb.d:ro