[英]Docker CentOS image does not auto start httpd
我正在嘗試使用 Apache 和 PHP 程序運行簡單的 Docker 圖像。 如果我運行它工作正常
docker run -t -i -p 80:80 my/httpd /bin/bash
然后手動啟動 Apache
service httpd start
但是我無法讓 httpd 在運行時自動啟動
docker run -d -p 80:80 my/httpd
Apache 將啟動然后容器存在。 我在我的 docker 文件中嘗試了一堆不同的CMD
CMD /etc/init.d/httpd start
CMD ["service" "httpd" "start"]
CMD ["/bin/bash", "/etc/init.d/httpd start"]
ENTRYPOINT /etc/init.d/httpd CMD start
CMD ./start.sh
start.sh 是
#!/bin/bash
/etc/init.d/httpd start
但是每次 docker 實例都會在 apache 啟動后存在
我錯過了一些非常明顯的東西嗎?
您需要直接運行 apache (httpd) - 您不應該使用 init.d 腳本。
兩種選擇:
/usr/sbin/apache2 -DFOREGROUND ...
(或 CentOS 中的 /usr/sbin/httpd)/sbin/init
作為入口點來啟動所有服務(包括配置為自動運行的 apache)。將此行添加到Dockerfile
的底部以在 CentOS 的前台運行 Apache
ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"]
在centOS上運行httpd的簡單Dockerfile
FROM centos:latest
RUN yum update -y
RUN yum install httpd -y
ENTRYPOINT ["/usr/sbin/httpd","-D","FOREGROUND"]
構建鏡像和運行容器的命令
建造
docker build . -t chttpd:latest
使用新鏡像運行容器
docker container run -d -p 8000:80 chttpd:latest
在 Dockerfile 的末尾,插入下面的命令以啟動 httpd
# Start httpd
ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"]
這對我有用
入口點 /usr/sbin/httpd -D start && /bin/bash
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.