Docker容器中的apache2服务状态

时间:2018-02-19 11:49:52

标签: apache docker

我的Dockerfile如下:

FROM php:7.2-apache

#install some basic tools
RUN apt-get -dd clean && apt-get -dd update && apt-get install -y \
    git \
    tree \
    vim \
    wget \
    iputils-ping \
    mysql-client \
    subversion

#install some base extensions
RUN apt-get install -y \
    libzip-dev \
    libicu-dev \
    zip \
  && docker-php-ext-configure zip --with-libzip \
  && docker-php-ext-configure intl \
  && docker-php-ext-install zip intl opcache pdo_mysql mysqli

#setup composer 
RUN curl -sS https://getcomposer.org/installer | php \
        && mv composer.phar /usr/local/bin/ \
        && ln -s /usr/local/bin/composer.phar /usr/local/bin/composer


WORKDIR /var/www/app

EXPOSE 80

RUN a2enmod rewrite

用mysql编写上面的图像后,我启动服务器,例如

docker-compose up -d

通过以下方式访问容器:

docker exec -it php_web_1 bash

然后我检查apache2服务状态:

service apache2 status

  
    

[FAIL] apache2未运行...失败!

  

如果我只是运行命令:apache2

  
    

httpd(pid 1)已经在运行

  

service apache2 start/stop对apache2状态没有任何影响。

两种方式有什么区别,为什么service apache2 start/stop不起作用?

1 个答案:

答案 0 :(得分:0)

如果查看Dockerfile基本映像的php:7.2-apache,您会看到CMD ["apache2-foreground"]运行位于/usr/local/bin/目录中的脚本以运行Apache服务器容器启动。如果您使用基本映像设置交互式会话并运行SysVInit命令(如service apache2 start),则会在您进行会话时停止的容器内启动Apache服务。

在您的情况下,尝试运行位于Dockerfile目录中的/usr/local/bin/中的脚本作为CMD命令,然后重新运行docker-compose up -d以查看Apache是​​否为是否开始。