Apache HTTP Server Docker Image - Требуется более чистая конфигурация в Dockerfile - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть этот Dockerfile, который выполняет дополнительную настройку официального образа Apache HTTP Server Docker.Есть ли более чистый способ сделать это внутри Dockerfile?Я очень незнаком с конфигурацией Apache HTTP Server и собирался это сделать.(Причина включения mod_rewrite заключается в том, что я использую его в файле .htaccess в папке htdocs)

ARG BUILD_DIR=/usr/src/app

FROM node:10.13.0-alpine as build
ARG BUILD_DIR
WORKDIR $BUILD_DIR
COPY package.json .
RUN npm install
COPY src src
COPY public public
RUN npm run build

FROM httpd:2.4.37-alpine
ARG BUILD_DIR
ENV SERVER_CONTAINER_NAME=server
COPY --from=build $BUILD_DIR/build htdocs
RUN sed -i 's,#\(LoadModule rewrite_module modules/mod_rewrite.so\),\1,g' conf/httpd.conf \
  && sed -i -e '/<Directory "\/usr\/local\/apache2\/htdocs">/,/<\/Directory>/{s/AllowOverride None/AllowOverride All/}' conf/httpd.conf \
  && sed -i 's,#\(LoadModule proxy_module modules/mod_proxy.so\),\1,g' conf/httpd.conf \
  && sed -i 's,#\(LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so\),\1,g' conf/httpd.conf \
  && echo 'ProxyRequests off' >> conf/httpd.conf \
  && echo 'ProxyPass /ws ws://${SERVER_CONTAINER_NAME}:8080/ws interpolate' >> conf/httpd.conf

1 Ответ

0 голосов
/ 03 декабря 2018

Может быть, лучше оставить измененные версии этих файлов конфигурации вне образа, а затем скопировать их в контейнер во время сборки.

В качестве альтернативы, вы можете поместить все команды оболочки в скрипт.Во время сборки скопируйте скрипт в контейнер.В конце сценария добавьте что-то вроде этого:

  exec /usr/sbin/apache2ctl -f /etc/apache2/apache2.conf -DFOREGROUND

, чтобы запустить свой сервер.Затем пусть docker вызывает скрипт как

CMD [ "/MyScript.sh" ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...