簡體   English   中英

在 Docker 容器上啟動 Apache

[英]Starting Apache on Docker container

我正在使用 Docker 來使用 Apache 和 PHP 構建映像,但是 Apache 的自動啟動存在問題。 這是 Dockerfile:

FROM ubuntu:16.04

RUN apt-get update

# Apache
RUN apt-get -y install apache2

# Apache config
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
RUN apache2ctl configtest
RUN a2dissite 000-default
COPY otpuskatame_backend.conf /etc/apache2/sites-available
RUN a2ensite otpuskatame_backend
RUN a2dissite 000-default
RUN rm /etc/apache2/sites-available/000-default.conf

# PHP
RUN apt-get -y install php libapache2-mod-php php-mcrypt

# Load container
CMD service apache2 start

EXPOSE 80

圖像已成功構建,但在使用以下命令運行時它會中斷:

sudo docker run -d -v /var/www/project/:/var/www:rw -p 80:80 --name=lamp1 lamp1

地位:

CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS                     PORTS                  NAMES
1a3679275b1d        lamp1                   "/bin/sh -c 'servi..."   8 seconds ago       Exited (0) 6 seconds ago                          lamp1 

日志看起來不錯:

 * Starting Apache httpd web server apache2

如果我從 Dockerfile 中刪除CMD行,然后登錄到容器並手動運行service apache2 start一切正常。 但是如何自動啟動呢?

這是由於 docker 中的主要服務被殺死,並且因為這個 docker 正在退出。 您需要在前台運行服務

嘗試將其添加到 Dockerfile 並重建它

CMD /usr/sbin/apache2ctl -D FOREGROUND

有關更多詳細信息,請參閱以下網站:

https://writing.pupius.co.uk/apache-and-php-on-docker-44faef716150

這是由於 docker 中的主要服務被殺死,並且由於此 docker 正在退出,您可以執行:

docker run -d -t -p 80:80 --name apache image bash -c "service apache2 start && sleep 60"

容器將存活 60 秒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM