运行 阿帕奇 docker
running apache in docker
好的,我已经用尽了几乎所有的线程和文章,但仍然无法在 Centos Docker Container 的独立模式下让我的 apache 网络服务器 运行。
这是我的简化 Docker 文件
# install apache
RUN yum -y install httpd
# start the webserver
ADD startservice /startservice
RUN chmod 775 /startservice
EXPOSE 80
CMD ["/startservice"]
我的星级服务脚本只有
#!/usr/bin/sh
service httpd start
我可以很好地构建,但是,似乎无法 运行 容器处于 daemon/standalone 模式。我该怎么做?
我正在使用它 运行 独立模式下的容器
docker run -p 80:80 -d -t webserver
我必须登录容器并启动网络服务器服务 运行。
docker run -p 80:80 -i -t webserver bash
service httpd start
这是一个经典的 docker 问题。您启动的进程必须在前台执行,否则容器会停止。
因此,为了能够做到这一点,可以在您的启动服务脚本中使用以下内容:
#!/usr/bin/sh
service httpd start
# Tail the log file
tail -f /var/log/httpd/access_log
# Alternatively, you can tail any file or even /dev/null
#tail -f /dev/null
请注意,还有其他方法可以解决此问题。一种方法是使用 supervisord 让您的进程保持活动状态。 supervisord-approach 比 tail -f
-approach 更干净,更少 hackish,我个人更喜欢那个替代方案。
另一种选择是 不将 httpd 作为服务启动,而是提供 -DFOREGROUND
参数。这将使 httpd 附加到 shell(而不是分叉到后台进程)。
/usr/sbin/httpd -DFOREGROUND
有关前台模式下 http 的更多信息,请查看此 question。
好的,我已经用尽了几乎所有的线程和文章,但仍然无法在 Centos Docker Container 的独立模式下让我的 apache 网络服务器 运行。
这是我的简化 Docker 文件
# install apache
RUN yum -y install httpd
# start the webserver
ADD startservice /startservice
RUN chmod 775 /startservice
EXPOSE 80
CMD ["/startservice"]
我的星级服务脚本只有
#!/usr/bin/sh
service httpd start
我可以很好地构建,但是,似乎无法 运行 容器处于 daemon/standalone 模式。我该怎么做?
我正在使用它 运行 独立模式下的容器
docker run -p 80:80 -d -t webserver
我必须登录容器并启动网络服务器服务 运行。
docker run -p 80:80 -i -t webserver bash
service httpd start
这是一个经典的 docker 问题。您启动的进程必须在前台执行,否则容器会停止。
因此,为了能够做到这一点,可以在您的启动服务脚本中使用以下内容:
#!/usr/bin/sh
service httpd start
# Tail the log file
tail -f /var/log/httpd/access_log
# Alternatively, you can tail any file or even /dev/null
#tail -f /dev/null
请注意,还有其他方法可以解决此问题。一种方法是使用 supervisord 让您的进程保持活动状态。 supervisord-approach 比 tail -f
-approach 更干净,更少 hackish,我个人更喜欢那个替代方案。
另一种选择是 不将 httpd 作为服务启动,而是提供 -DFOREGROUND
参数。这将使 httpd 附加到 shell(而不是分叉到后台进程)。
/usr/sbin/httpd -DFOREGROUND
有关前台模式下 http 的更多信息,请查看此 question。