PHP 无法解析主机名

Jim*_*myD 0 docker dockerfile

我正在使用 Slim 框架 (PHP) 为我的第一个项目学习 docker。我创建了一个 dockerfile 来构建一个包含所有源代码的图像。当我使用 run 命令运行图像时,它会显示我

<b>Warning</b>:  Unknown: php_network_getaddresses: getaddrinfo failed: Name does not resolve in <b>Unknown</b> on line <b>0</b><br />
[Sat Jun 15 09:41:14 2019] Failed to listen on  127.0.0.1:8080 (reason: php_network_getaddresses: getaddrinfo failed: Name does not resolve)
Run Code Online (Sandbox Code Playgroud)

Dockerfile 看起来像:

FROM php:7-alpine
COPY . /var/www
WORKDIR /var/www
CMD [ "php", "-S 127.0.0.1:8080 -t public" ]
Run Code Online (Sandbox Code Playgroud)

Docker 运行命令是:

sudo docker run -it --rm --network="host" --expose 8080 --name cm2 collection_manager_1
Run Code Online (Sandbox Code Playgroud)

不知道我该如何解决这个问题。有人能帮我吗?

mch*_*wre 5

CMD 语法似乎有一些问题。命令中的所有参数都应该用逗号分隔并在双引号内。

我做了一个小小的改变Dockerfile,它奏效了。

FROM php:7-alpine
COPY . /var/www
WORKDIR /var/www
CMD [ "php", "-S", "0.0.0.0:8080", "-t", "html" ]
Run Code Online (Sandbox Code Playgroud)

docker build -t testimage:v1 .

[mchawre@jumphost try]$ docker run -it --rm --network="host" --expose 8080 --name testrun testimage:v1
PHP 7.3.6 Development Server started at Sat Jun 15 11:50:19 2019
Listening on http://0.0.0.0:8080
Document root is /var/www/html
Press Ctrl-C to quit.
Run Code Online (Sandbox Code Playgroud)

注意:将127.0.0.1 更改为 0.0.0.0,以便您可以使用机器的公共/私有 ip 而不仅仅是本地主机访问 php。