如何为docker官方httpd镜像启用mod_rewrite模块?

xzv2uavs  于 2023-05-06  发布在  Docker
关注(0)|答案(2)|浏览(123)

我在docker-compose的帮助下在docker中运行LAMP堆栈,对于web服务器,我使用来自https://hub.docker.com/_/httpd的官方镜像。httpd容器由Dockerfile创建:

ARG APACHE_VERSION
FROM httpd:$APACHE_VERSION
RUN apt-get update;\apt-get upgrade;\a2enmod rewrite
COPY demo.apache.conf /usr/local/apache2/conf/demo.apache.conf
RUN echo "Include /usr/local/apache2/conf/demo.apache.conf" \
    >> /usr/local/apache2/conf/httpd.conf

我尝试使用\a2enmod rewrite命令启用mod_rewrite,但在构建过程中出现以下错误:

/bin/sh: 1: a2enmod: not found
ERROR: Service 'apache' failed to build: The command '/bin/sh -c apt-get update;\apt-get upgrade;\a2enmod rewrite' returned a non-zero code: 127

a2 enmod失败了--从我的阅读来看,它只在debian系统中可用,httpd基础镜像没有它。
如何在构建过程中为这个docker官方httpd镜像启用mod_rewrite模块?

yyhrrdl8

yyhrrdl81#

最后我发现了。我必须在apache.conf文件中添加以下行来启用该模块:

LoadModule rewrite_module modules/mod_rewrite.so
daupos2t

daupos2t2#

您不需要a2enmod来为Docker官方httpd镜像启用某些模块。您所要做的就是显式地将模块添加到apache.conf文件中。所以在我的例子中,我需要启用mode_rewrite,这是我的示例Dockerfile:

FROM httpd:2.4-alpine

RUN echo "LoadModule rewrite_module modules/mod_rewrite.so" >> /usr/local/apache2/conf/httpd.conf

COPY ./html/ /usr/local/apache2/htdocs/

相关问题