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

How to install apache module in docker container at the correct location

我有以下 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 module 添加到我的容器中。
基本映像是高山的,但 wodby/apache 继承自 wodby/http,即 Debian。

不知何故 module 安装在 /usr/lib/apache2 下,但 wodby/apache 中的 apache 似乎从 /usr/local/apache2/modules.[=14 加载其 module =]

我不认为解决方案是移动每个 cp 或符号链接的 module?

这里是基础 docker 文件的链接: https://github.com/wodby/httpd https://github.com/wodby/apache

如何确保 module 和配置放在正确的位置?我认为问题可能是使用的 Linux 发行版之间的差异。 有什么提示吗?

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

由于 wodby/httpd 是从 docker-library/httpd 分叉出来的,您可以看到与 Debian 相关的文件 Docker,但根据 README.md 文件,它们仅支持基于 alpine 的图像。

甚至图像 woby/apache 也是基于高山的。

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

mod_auth_kerb.conf

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

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

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)