Docker 容器在运行 php 应用程序时出现 503 错误

Posted

技术标签:

【中文标题】Docker 容器在运行 php 应用程序时出现 503 错误【英文标题】:Docker container giving 503 error while running php application 【发布时间】:2021-11-29 00:12:28 【问题描述】:

我有一个 dockerfile 来构建一个安装了 php 的图像

FROM centos:latest
RUN yum install  net-tools -y
RUN yum install  httpd -y
RUN yum install php -y
ENV REFRESHED AT "04-06-2016"
ADD index.php /var/www/html/

index.php 文件是这样的

<?php
print("welcome to php");
print("\n\n");
print `ifconfig`;
?>

我正在从命令构建图像

docker build -t myimage .

然后我正在从命令运行一个容器

docker container run -it --name os1 myimage

然后从容器中,我从命令启动服务

usr/sbin/httpd

它给了我这个警告

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message

但是如果我从我的主机运行命令curl 172.17.0.2,它会给我这个输出

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>503 Service Unavailable</title>
</head><body>
<h1>Service Unavailable</h1>
<p>The server is temporarily unable to service your
request due to maintenance downtime or capacity
problems. Please try again later.</p>
</body></html>

我不明白为什么会收到此错误。 我尝试从容器中的 dockerfile 运行每个命令,然后它工作正常,但是从 dockerfile 构建图像给了我这个错误。

【问题讨论】:

【参考方案1】:

您缺少一个允许创建 php 套接字的目录(IDK 为什么缺少它)

您只需在创建 Docker 映像时创建该目录:

FROM centos:latest
RUN yum install  net-tools -y
RUN yum install  httpd -y
RUN mkdir /run/php-fpm
RUN yum install php -y
ENV REFRESHED AT "04-06-2016"
ADD index.php /var/www/html/

一旦在容器内运行/usr/sbin/php-fpm/usr/sbin/httpd 之后启动 php-fpm 并且它可以工作... Success

【讨论】:

是的,现在它正在工作。你能告诉我你是怎么想出这个解决方案的吗?你是怎么调试的?

以上是关于Docker 容器在运行 php 应用程序时出现 503 错误的主要内容,如果未能解决你的问题,请参考以下文章

在节点 Docker 容器中运行项目时出现 Tailwind CSS EACCESS 错误(Docker Compose)

尝试将docker容器连接到mongodb时出现异常打开套接字异常

使用 Flyway 和 Docker 容器内的嵌入式 Postgresql 运行测试时出现 java.net.ConnectException

运行命令 **sed** 时出现 docker 容器错误 [重复]

使用 docker-compose 构建容器时出现“php_network_getaddresses:getaddrinfo failed:Temporary failure in name reso

解决CentOS7下运行docker容器时出现的报错Error resolving syscall name...