无法使用Docker自动启动Apache [英] Cannot start apache automatically with docker

查看:342
本文介绍了无法使用Docker自动启动Apache的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我为php开发做了一个简单的自定义docker设置。到目前为止,一切正常。我唯一不知道的是为什么apache2无法自动启动。

I made a simple custom docker setup for php development. So far everything works as expected. The only thing that I cannot figure out is why apache2 does not start automatically.

这是我的dockerfile:

Here is my dockerfile:

FROM ubuntu:latest
RUN apt-get update && apt-get install -y apache2 php libapache2-mod-php php-mcrypt php-mysql php-cli php-curl php-xml php-intl php-mbstring git vim composer curl

COPY . /var/www/example
COPY vhost.conf /etc/apache2/sites-available/example.conf

RUN a2ensite example
RUN chown -R www-data:www-data /var/www/example/logs
RUN service apache2 restart

这是我的docker-compose.yml:

And here is my docker-compose.yml:

version: '2'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    image: myexampleapp
    ports:
        - 8080:80
    tty: true

这是输出docker-compose up命令:

And here is the output docker-compose up command:

me@mydell:~/workspace/mydockercompose$ docker-compose up -d --build
Creating network "mydockercompose_default" with the default driver
Building app
Step 1/7 : FROM ubuntu:latest
 ---> f975c5035748
Step 2/7 : RUN apt-get update && apt-get install -y apache2 php libapache2-mod-php php-mcrypt php-mysql php-cli php-curl php-xml php-intl php-mbstring git vim composer curl
 ---> Using cache
 ---> 148c3a9d928a
Step 3/7 : COPY . /var/www/example
 ---> 1fbc1dbacf1e
Step 4/7 : COPY vhost.conf /etc/apache2/sites-available/example.conf
 ---> 9c08947b09e9
Step 5/7 : RUN a2ensite example
 ---> Running in 1ef64defe747
Enabling site example.
To activate the new configuration, you need to run:
  service apache2 reload
Removing intermediate container 1ef64defe747
 ---> ca1c8e7e80fc
Step 6/7 : RUN chown -R www-data:www-data /var/www/example/logs
 ---> Running in 57b0214be7a0
Removing intermediate container 57b0214be7a0
 ---> b3b270a36bf4
Step 7/7 : RUN service apache2 restart
 ---> Running in 09d2b1d3bd91
 * Restarting Apache httpd web server apache2
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
   ...done.
Removing intermediate container 09d2b1d3bd91
 ---> 19fa9a90f9de
Successfully built 19fa9a90f9de
Successfully tagged myexampleapp:latest
Creating mydockercompose_app_1

它清楚表明apache已成功重启。但是实际上并没有:

It shows clearly that apache was restarted successfully. However it actually does not:

me@mydell:~/workspace/mydockercompose$ docker exec -i -t 20add8ad9895 service apache2 status
 * apache2 is not running

我是Docker的新手,所以所有建议(即使他们没有回答这个特定的问题)以改善我到目前为止的工作。

I am new to docker, so all suggestions (even if they are not answering this specific question) to improve what I am doing so far are welcome.

谢谢

推荐答案

Docker服务必须在前台运行。在您的Dockerfile中, RUN服务apache2 restart 将启动apache作为后台进程。因此,容器将退出。

Docker services have to be running in the foreground. In your Dockerfile, RUN service apache2 restart will start apache as background process. Hence the container will exit.

要在前台运行apache,请将以下内容添加到Dockerfile中。

To run apache in the foreground, add the following to the Dockerfile.

CMD [ / usr / sbin / apachectl,-D, FOREGROUND]

FROM ubuntu:latest
RUN apt-get update && apt-get install -y apache2 php libapache2-mod-php php-mcrypt php-mysql php-cli php-curl php-xml php-intl php-mbstring git vim composer curl

COPY . /var/www/example
COPY vhost.conf /etc/apache2/sites-available/example.conf

RUN a2ensite example
RUN chown -R www-data:www-data /var/www/example/logs
CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]

这篇关于无法使用Docker自动启动Apache的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆