PhpStorm 测试运行器在 Docker 中丢失共享网络

PhpStorm test runner looses shared network in Docker

我有一个集成测试,它使用 docker 容器中的主机名向 API URL 发出 curl 请求。 API 的 docker-compose.yml 与 PHP 的 docker-compose.yml 不同,因此它们被配置为通过共享网络(参见 )。

当我 运行 通过 PHP 容器 (php vendor/phpunit/phpunit/phpunit tests) 的终端进行测试时,API(具有 docker 容器名称作为主机名)来自另一个 docker-compose 环境,是可访问的。所以正在解决,并回复内容。

但是当我 运行 通过 PhpStorm 进行测试时,它使用来自 docker-compose 的 PHP 解释器,API URL 不能得到解决,好像会忽略共享网络。在终端中,我可以看到从 PhpStorm 生成并触发了一个长 PHPUnit 命令:

[docker://php_php:latest/]:php /opt/project/php/vendor/phpunit/phpunit/phpunit --no-configuration --filter MyNamespace\Tests\CurlTest --test-suffix CurlTest.php /opt/project/php/tests/Integration --teamcity --cache-result-file=/opt/project/.phpunit.result.cache

如何修复 PhpStorm 测试 运行 以考虑 Docker 中的共享网络?

解决方案是:

  1. docker-compose.yml 中明确添加 docker-compose 版本(例如 version: '3.9'),以修复尝试设置 Docker Compose CLI 解释器时的错误。
  2. 创建类型为 Docker Compose 的新 CLI 解释器条目,而不是 Docker