#php #docker #dockerfile #http-status-code-503
Вопрос:
У меня есть файл 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("nn");
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, и он заработает…
Успех
Комментарии:
1. Да , теперь это работает . можете ли вы рассказать мне, как вы нашли это решение? как вы это отладили?