当前位置: 首页 > 面试题库 >

在Docker中运行Apache

柳珂
2023-03-14
问题内容

好的,我几乎用尽了所有线程和文章,但是仍然无法使我的apache网络服务器在Centos Docker Container上以独立模式运行。

这是我的简化Dockerfile

# install apache
RUN yum -y install httpd

# start the webserver
ADD startservice /startservice
RUN chmod 775 /startservice

EXPOSE 80

CMD ["/startservice"]

我的starservice脚本只有

#!/usr/bin/sh
service httpd start

我可以构建良好,但是似乎无法在守护程序/独立模式下运行容器。我怎么做?

我正在使用它以独立模式运行容器

docker run -p 80:80 -d -t webserver

我必须登录到容器并启动服务以使Web服务器运行。

docker run -p 80:80 -i -t webserver bash
service httpd start

问题答案:

这是经典的Docker问题。您启动的过程必须在前台执行,否则容器将停止。

因此,为了能够做到这一点,可以在startservice脚本中使用以下内容:

#!/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的方法是清洁和Les
hackish的tail -f-approach和我个人更喜欢的选择。

另一种选择是,您不 将httpd作为服务启动, 而是提供-DFOREGROUND参数。这将使httpd附加到外壳程序(而不是派生到后台进程)。

/usr/sbin/httpd -DFOREGROUND

有关前台模式下的http的更多信息,请检查此问题。



 类似资料:
  • 这是我的docker-commentfile.yaml: 这是一个由两个cotnainer组成的组合,一个使用mysql,一个使用Java代码,使用db,现在我需要运行它,我有一个错误: 有人知道错误的原因吗?

  • Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。 Hello world 现在让我们来试试 $ sudo docker run ubuntu:14.04 /bin/echo 'Hello world' Hello world 刚才你启动了你的第一个容器! 那么刚才发生了什么? 我们逐步来分析 docker run 命令做了哪些事情。 首先,

  • Jupyter 是个好东西,提供了简单易用的 web REPL 环境,并且可以根据工作语言选配不同的 kernel 提供不同的功能。但是,由于常常用作测试所用,因此对于我这样的“洁癖患者”来说,保持后台常驻和环境清洁实在是非常终于,于是我想到了 docker,实在是 Jupter 运行容器的不二之选。 本来打算自己定制一个的,不过一番搜索后发现官方提供了更为详细和成熟的 docker 镜像,实在是

  • 我有一个安装了python和java的docker映像,现在我想将这两个进程作为docker的子进程运行。 我查看了这篇文章,它解释了如何在安装了docker和python的情况下准备图像。它并没有解释如何让它们都运行。如何使用python和Java运行Docker? 我检查了如何在dockerhttps://runnable.com/docker/rails/run-multiple-proce

  • Docker-compose.yaml 我怎么能那么做?

  • Debug.DockerFile 运行命令 正在连接RabbitMQ