Dockerfile在mysqli和a2enmod重写不起作用的情况下启动PHP容器

Dockerfile在mysqli和a2enmod重写不起作用的情况下启动PHP容器,php,apache,docker,Php,Apache,Docker,我正在尝试基于dockerfile启动一个容器。它应该有mysqli和a2enmod 我的文件是 FROM php:7.1-apache RUN docker-php-ext-install mysqli && a2enmod rewrite && service apache2 restart 但a2enmod在启动前未启用。当我连接到容器bash时,我发现a2enmod没有启用 $ a2enmod rewrite Enabling module rewrit

我正在尝试基于dockerfile启动一个容器。它应该有mysqli和a2enmod

我的文件是

FROM php:7.1-apache
RUN docker-php-ext-install mysqli && a2enmod rewrite && service apache2 restart
但a2enmod在启动前未启用。当我连接到容器bash时,我发现a2enmod没有启用

$ a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run: service apache2 restart
$ a2enmod rewrite
Module rewrite already enabled
我做错了什么?

正如所建议的,有两个问题

  • 我需要重建docker的图像
  • 我不需要重新启动apache服务,因为apache在容器初始化期间没有运行

  • 修复这些问题解决了我的问题。

    可能会指定a2enmod脚本的完整路径。这表明默认情况下容器中没有启用模块。容器是从一开始的映像构建的。我对docker不太熟悉。似乎您需要学习如何更改docker图像。(该图像类似于容器实例的模板。)是否重建了docker图像?如何运行容器?为什么在Dockerfile中运行
    服务apache2 restart
    ?@AlexKarshin启用模块后需要重新启动apache2。我猜docker文件中的命令在还不可用的情况下是在某些太早的状态下执行的。@Quasimodo's请阅读docker的工作原理。我知道需要重新启动apache,但apache是在容器中运行的,而不是在构建期间:-/