如何在正确位置的Docker容器中安装apache模块

时间:2019-03-15 16:37:42

标签: apache docker debian dockerfile alpine

我有以下docker文件:

FROM wodby/apache:2.4
MAINTAINER NAME EMAIL
ENV http_proxy 'http://xxx.xxx.xxx.de:80'
ENV https_proxy 'http://xxx.xxx.xxx.xxx:80'
ENV APP_ROOT="/var/www/html" \
    APACHE_DIR="/usr/local/apache2"

WORKDIR /usr/local/apache2

USER root
RUN ls


RUN set -x \
    && apk add apache-mod-auth-kerb


CMD ["tail", "-f", "/dev/null"]

我的目的是将apache-mod-auth-kerb模块添加到我的容器中。
基本映像是高山的,但wodby / apache继承自Debian的wodby / http。

以某种方式将模块安装在/ usr / lib / apache2下,但是wodby / apache中的apache似乎是从/ usr / local / apache2 / modules中加载其模块的。

我不认为解决方案是按cp或symlink移动模块吗?

以下是指向基本dockerfile的链接: https://github.com/wodby/httpd https://github.com/wodby/apache

如何确保将模块和配置放置在正确的位置?我认为问题可能出在二手Linux发行版之间。 有提示吗?

1 个答案:

答案 0 :(得分:1)

docker-library/httpd(由Docker维护)支持基于高山和Debian的映像。

由于wodby / httpd是从docker-library / httpd派生的,因此您可以看到与Debian相关的Dockerfile文件,但根据README.md文件,它们仅支持基于高山的映像。

甚至woby / apache的图片都是基于高山的。

对于模块,您可以创建如下所示的conf文件

mod_auth_kerb.conf

LoadModule auth_kerb_module /usr/lib/apache2/mod_auth_kerb.so

Dockerfile

FROM wodby/apache:2.4
MAINTAINER NAME EMAIL
ENV http_proxy 'http://xxx.xxx.xxx.de:80'
ENV https_proxy 'http://xxx.xxx.xxx.xxx:80'
ENV APP_ROOT="/var/www/html" \
    APACHE_DIR="/usr/local/apache2"

WORKDIR /usr/local/apache2

USER root
RUN ls


RUN set -x \
    && apk add apache-mod-auth-kerb

COPY mod_auth_kerb.conf /usr/local/apache2/conf/conf.d/mod_auth_kerb.conf

您可以检查它们

bash-4.4# httpd -M | grep auth_kerb_module
   auth_kerb_module (shared)