发布
社区首页 >问答首页 >带有php内置服务器的Docker

带有php内置服务器的Docker
EN

Stack Overflow用户
提问于 2014-08-31 19:13:07
回答 1查看 15.9K关注 0票数 23

我试图通过docker运行php内置服务器(php -S localhost:8080),但我无法从主机访问站点-我总是以重置连接告终。

下面是我构建的一个简单的Dockerfile:

代码语言:javascript
代码运行次数:0
复制
FROM centos:centos6

RUN rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
RUN rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
RUN rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

RUN yum --enablerepo=remi,remi-php55 install -y php php-opcache php-cli php-pear php-common && yum clean all
RUN php -r "readfile('https://getcomposer.org/installer');" | php
RUN echo "date.timezone = Europe/Prague" >> /etc/php.ini
RUN mv composer.phar /usr/bin/composer
RUN php -r "eval('?>'.file_get_contents('http://backend.bolt80.com/piecrust/install'));"
RUN mv piecrust.phar /usr/bin/chef

CMD ["/bin/bash"]

有没有可能用docker来运行这个服务器?在尝试使其工作时,我发现当安装nginx并将其设置为在此端口上侦听时,可以从主机访问它。PHP内置服务器似乎对主机是隐藏的,因此无法处理任何请求。

有没有人成功地完成了这项工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-01 04:49:03

如果您在docker容器中使用php -S localhost:8080启动will服务器,则will服务器将只接受源自docker容器本身的连接。

为了能够从docker主机与您的two服务器通信,您需要进行两项更改:

  • 在Dockerfile文件中添加EXPOSE 8080,或者在运行容器时将-p 8080添加到docker run命令行。这将告诉停靠主机您的容器有一个程序,该程序期望在端口8080
  • 上进行通信,并使用php -S 0.0.0.0:8080启动has服务器,以便它也接受来自停靠容器本身的外部的连接

运行容器并执行这些更改后,在docker主机上打开一个新的终端,并使用docker ps命令查看docker主机上的哪个端口转发到容器中的端口8080。例如:

代码语言:javascript
代码运行次数:0
复制
$ docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                     NAMES
fbccf4058b07        test:latest         "php -S 0.0.0.0:8080   4 minutes ago       Up 4 minutes        0.0.0.0:49153->8080/tcp   sad_hawking

在本例中,将使用docker主机的端口49153。然后查询您的with服务器以验证您是否可以与其通信:

$ curl http://localhost:49153

票数 57
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25591413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档