Добавьте mod_rewrite в образ Docker httpd:alpine
Честно говоря, у меня почти нет опыта работы с 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 (или какого-либо модуля в этом отношении).
Спасибо всем большое за вашу поддержку!
1 ответ
mod_rewrite
по умолчанию устанавливается с 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
Я полагаю, вы хотите иметь работающий механизм перезаписи.htaccess. Для этого вам нужно сделать 2 вещи:
В httpd.conf включите mod_rewrite, раскомментировав строку:
LoadModule модули rewrite_module /mod_rewrite.so
В httpd.conf измените AllowOverride для вашего рабочего каталога на All (не меняйте каждый AllowOverride, потому что это проблема безопасности)
AllowOverride All
Рекомендуется загрузить httpd.conf из контейнера, изменить эти значения, а затем загрузить новый httpd.conf при создании образа в тот же каталог:
например
извлечь httpd.confdocker run --rm httpd: 2.4 cat /usr/local/apache2/conf/httpd.conf> my-httpd.conf
загрузите новый процесс сборки httpd.confon:COPY./my-httpd.conf /usr/local/apache2/conf/httpd.conf