Dockerfile启动PHP容器,mysqli和a2enmod重写不起作用

I'm trying to start a container based on a dockerfile. it shoud have mysqli and a2enmod.

My Dockerfile is

FROM php:7.1-apache
RUN docker-php-ext-install mysqli && a2enmod rewrite && service apache2 restart

but the a2enmod is not enablad before start. When I Attach to the container bash I got that a2enmod was not enabled

$ a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run: service apache2 restart
$ a2enmod rewrite
Module rewrite already enabled

What am I doing wrong?

duanlidi1051
duanlidi1051 一般来说,您应该假设像服务这样的命令在Docker中不起作用。正如@AlexKarshin建议的那样,在这种情况下,我认为你可以删除服务apache2重启部分:Apache在构建阶段没有运行,运行dockerrun会启动它。
大约 2 年之前 回复
duanjiao4763
duanjiao4763 请阅读Docker的工作原理。我知道apache重启是必需的,但是apache在容器中运行,而不是在构建期间运行:-/
大约 2 年之前 回复
douhuang1852
douhuang1852 正如ryantxr建议的那样,使用完整路径可能会有效。某些可执行文件($PATH)的路径可能仅在交互式shell中可用。
大约 2 年之前 回复
duaedf6509
duaedf6509 启用模块后需要重启apache2。我想Docker文件中的命令是在一些过早的状态下执行的。
大约 2 年之前 回复
dongyimo1293
dongyimo1293 你重建了码头图像吗?你如何运行容器?为什么在Dockerfile中运行serviceapache2restart?
大约 2 年之前 回复
duanouyong4228
duanouyong4228 它接缝表明模块在容器中默认不启用。在开始时从图像构建容器。我对码头工不太熟悉。您似乎需要了解如何更改docker镜像。(图像就像容器实例的模板。)
大约 2 年之前 回复
dtqqq24248
dtqqq24248 也许指定a2enmod脚本的完整路径。
大约 2 年之前 回复

1个回答



正如 Alex Karshin < / a>,有2个问题。</ p>


  1. 我需要重建docker镜像。</ li>
  2. 我不需要重启 apache服务,因为apache在容器初始化期间没有运行。</ li>
    </ ol>

    修复这些问题解决了我的问题。</ p>
    </ div>

展开原文

原文

As suggested by Alex Karshin, there was 2 problems.

  1. I need to rebuild the docker image.
  2. I don't need to restart the apache service because apache was not running during container initialization.

Fixing those issues solved my problem.

douqiao1413
douqiao1413 一旦SO允许,请不要忘记将此标记为已接受的答案。
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐