Docker 容器中的 Nginx 不会 运行 PHP

Nginx in Docker container won't run PHP

我是 Docker 的初学者,我正在尝试构建自己的映像:Ubuntu + Nginx + PHP。

所以,我有一个名为 test 的目录。在目录内还有另外两个目录,appsites-enabled。此外,还有一个 Docker 文件,内容为:

FROM ubuntu:trusty

RUN apt-get update && \
    apt-get install -y nginx php5-fpm php5-mysql php-apc php5-imagick php5-imap php5-mcrypt php5-gd libssh2-php && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

RUN echo "daemon off;" >> /etc/nginx/nginx.conf
ADD sites-enabled/ /etc/nginx/sites-enabled/
ADD app/ /app/

EXPOSE 80
CMD ["php5-fpm", "-c", "/etc/php5/fpm"]
CMD ["/usr/sbin/nginx"]

我成功构建了这个镜像。然后我用 docker run -d image_name 创建容器。我得到了ID,然后我运行docker inspect -f "{{.NetworkSettings.IPAddress}}" ID为了得到容器的IP地址

我需要这个 IP 地址,因为我也在另一个容器中 运行 HAProxy,所以我可以将它配置为指向正确的位置。

因此,HAProxy 和带有 PHP 应用程序的容器都 运行 正常。 HAProxy 指向正确的应用程序。 PHP 应用程序文件上传到容器内的正确位置。

但是,Nginx 不执行 PHP。相反,当我尝试访问该应用程序时,我只获得了一个包含 index.php PHP 代码的下载文件。

可能是什么问题?请帮忙。

我的第一个猜测是我在 运行 php5-fpm 时在 Docker 文件中做错了什么。我尝试了几种不同的方法,但似乎没有一种有效。

只有一个 CMD。

如果您需要 "services",请查看 supervisord 或 runit。