为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Docker 容器中测试 PHP API

如何在 Docker 容器中测试 PHP API

PHP
潇潇雨雨 2022-07-16 17:20:44
我在 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 文件中的每个容器创建主机别名(同一网络上的其他容器可以使用该服务名称)。


查看完整回答
反对 回复 2022-07-16
  • 1 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信