说实话,我几乎没有使用Alpine Linux的经验,但我喜欢它的方法,因此想要改变它。我对Docker也比较陌生,所以如果这是一个"愚蠢的"问题
我想要实现的是在httpd:alpine
图像的基础上,并根据我的需要扩展HTTPd。
这包括激活mod_rewrite模块并将自定义.htaccess复制到图像中。
这是我到目前为止所做的:
FROM httpd:alpine
# Copy .htaccess into DocumentRoot
COPY ./.htaccess /var/www/html/
RUN apk update
RUN apk upgrade
RUN apk add apache2-utils
RUN a2enmod rewrite
RUN rc-service apache2 restart
我现在的问题是,我经常收到" a2enmod not found"错误,我不知道如何解决。这可能是因为a2enmod是一个纯粹的Debian / Ubuntu / ...的东西,但我不知道激活mod_rewrite(或任何模块)的任何替代方法。
非常感谢大家的支持!
答案 0 :(得分:7)
mod_rewrite
默认安装在alpine的apache中,因此无需再次安装。以下是您在Alpine中启用mod_rewrite
的方法:
FROM httpd:alpine
# Copy .htaccess into DocumentRoot
COPY ./.htaccess /var/www/html/
RUN sed -i '/LoadModule rewrite_module/s/^#//g' /usr/local/apache2/conf/httpd.conf
RUN { \
echo 'IncludeOptional conf.d/*.conf'; \
} >> /usr/local/apache2/conf/httpd.conf \
&& mkdir /usr/local/apache2/conf.d
答案 1 :(得分:1)
我想您想拥有有效的.htaccess重写机制。 为此,您需要做两件事:
在httpd.conf中,通过取消注释行来启用mod_rewrite:
LoadModule rewrite_module modules / mod_rewrite.so
在httpd.conf中,将您的工作目录的AllowOverride更改为All(不要更改每个AllowOverride,因为这是安全问题)
允许全部覆盖
从建筑物中下载httpd.conf,更改此值,然后在将映像构建到同一目录时上传新的httpd.conf是一个好习惯:
例如
提取httpd.conf docker run --rm httpd:2.4 cat /usr/local/apache2/conf/httpd.conf> my-httpd.conf
上传新的httpd.confon构建过程: 复制./my-httpd.conf /usr/local/apache2/conf/httpd.conf