Вот мой Dockerfile:
FROM debian
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/web/log/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid
ENV APACHE_RUN_DIR /var/run/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
#RUN export DEBIAN_FRONTEND=noninteractive && apt-get update && apt-get -y -q upgrade && apt-get -y -q install apache2
RUN apt-get update && apt-get -y -q upgrade && apt-get -y -q install apache2
EXPOSE 80 443
CMD ["/usr/sbin/apache2ctl","-D","FOREGROUND","&"]
Когда я запускаю свой контейнер, система вызывает apache2 вместо apache2ctl, и у меня появляется это сообщение об ошибке:
:~/strech_apache$ docker container run -ti -p 80:80 system/strech_apache
Usage: /usr/sbin/apache2 [-D name] [-d directory] [-f file]
[-C "directive"] [-c "directive"]
[-k start|restart|graceful|graceful-stop|stop]
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S] [-X]
Options:
-D name : define a name for use in <IfDefine name> directives
.../...
Action '-D FOREGROUND &' failed.
The Apache error log may have more information.
Когда я запустил свой Dockerfile как контейнер без строки CMD
в интерактивном режиме, я смог запустить apache2ctl -D FOREGROUND &
, и у меня появилась работающая по умолчанию страница apache.
UPDATE
Когда я сделал свой Dockefile со строкой CMD
следующим образом:
CMD ["apache2ctl","-D","FOREGROUND"]
Мое сообщение об ошибке изменилось следующим образом:
system@vmdebian:~/strech_apache$ docker container run -ti -p 80:80 system/strech_apache:strech
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message
system@vmdebian:~/strech_apache$
То же самое, если бы я написал свой CMD так:
CMD ["service","apache2","restart"]
У меня есть это сообщение
system@vmdebian:~/strech_apache$ docker container run -ti -p 80:80 system/strech_apache:strech
[....] Restarting Apache httpd web server: apache2AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message
. ok
Это похоже на включение / выключение apache и остановка контейнера с остановкой apache2
Как запустить apache2?