【问题标题】:How to install apache module in docker container at the correct location如何在 docker 容器中的正确位置安装 apache 模块
【发布时间】:2019-03-15 16:37:42
【问题描述】:

我有以下 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 模块添加到我的容器中。
基本映像是 alpine,但 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 发行版之间的差异。 有什么提示吗?

【问题讨论】:

    标签: apache docker debian dockerfile alpine


    【解决方案1】:

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

    由于 wodby/httpd 是从 docker-library/httpd 派生的,因此您可以查看 Debian 相关的 Dockerfile 文件,但它们仅支持 README.md 文件中的基于 alpine 的图像。

    即使图像 woby/apache 也是基于 alpine 的。

    对于模块,你可以创建一个如下所示的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)
    

    【讨论】:

    • 如果已经用 >> 替换了上面的 > 但它在某种程度上不起作用。该行没有被添加。我什至尝试将 httpd.conf 复制到容器中,但失败了。 (7/7) Installing apache-mod-auth-kerb (5.4-r5) Executing busybox-1.29.3-r10.trigger OK: 133 MiB in 85 packages Removing intermediate container c772d90792b0 ---> ab362aa46f43 Step 10/11 : COPY httpd.conf /usr/local/apache2/conf/httpd.conf COPY failed: stat /var/lib/docker/tmp/docker-builder085042809/httpd.conf: no such file or directory
    • 我已经通过复制新的 conf 文件编辑了答案。这更简单,因为它消除了编辑 httpd.conf 的依赖
    • 现在可以正常工作 - 在那个 Windows 故障中运行。该文件是在 PHPStorm 中使用 CRLF 创建的。转换为 LF 解决了这个问题。
    猜你喜欢
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 2017-11-11
    • 2020-10-23
    • 1970-01-01
    • 2021-07-08
    相关资源
    最近更新 更多