我在 Docker 容器内有一个用 PHP/Symfony 构建的 api。我想测试一下。要做到这一点 :首先:我进入我的容器:docker-compose exec da-invoicing-php sh第二:我运行测试:vendor/bin/simple-phpunit在我的测试中,我有这个要求:$result = $this->client->request( 'POST', '10.110.167.124:8080/api/v1/course_invoices', [ RequestOptions::HEADERS => [ 'Accept' => 'application/ld+json', 'Content-Type' => 'application/json', 'Authorization' => "Bearer {$this->token}", ], RequestOptions::BODY => json_encode([ 'courseInstanceId' => self::COURSE_INSTANCE, ]), ] );如您所见,我向端点“'10.110.167.124:8080/api/v1.....”请求。它有效,但我知道我不能这样继续下去。我尝试使用“localhost”、“localhost:8080”、“http://localhost”等...但没有成功。我总是有这个错误:GuzzleHttp\Exception\ConnectException:cURL 错误 7:无法连接到 localhost 端口 8080:连接被拒绝(请参阅https://curl.haxx.se/libcurl/c/libcurl-errors.html)那么如何在容器内进行这个测试呢?
1 回答
隔江千里
TA贡献1906条经验 获得超10个赞
你不能在你的 PHP 容器中直接使用 localhost 它不提供 HTTP,它是 php-fpm。
您必须调用 nginx 容器 da-invoicing-api
$result = $this->client->request(
'POST',
'da-invoicing-api/api/v1/course_invoices',
[
RequestOptions::HEADERS => [
'Accept' => 'application/ld+json',
'Content-Type' => 'application/json',
'Authorization' => "Bearer {$this->token}",
],
RequestOptions::BODY => json_encode([
'courseInstanceId' => self::COURSE_INSTANCE,
]),
]
);
Docker-compose为您的 compose 文件中的每个容器创建主机别名(同一网络上的其他容器可以使用该服务名称)。
- 1 回答
- 0 关注
- 144 浏览
添加回答
举报
0/150
提交
取消