代码之家  ›  专栏  ›  技术社区  ›  Archivar

将mod\u rewrite添加到Docker image httpd:alpine

  •  11
  • Archivar  · 技术社区  · 7 年前

    老实说,我几乎没有使用Alpine Linux的经验,但我喜欢它的方法,因此我想改变这一点。我对Docker也比较陌生,所以如果这是一个“愚蠢”的问题,请容忍我。

    我想要实现的是在 httpd:alpine 映像并将HTTPd扩展到我的需要。

    这将包括激活mod\u重写模块和复制自定义。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\u rewrite(或任何模块)的其他方法。

    非常感谢大家的支持!

    2 回复  |  直到 7 年前
        1
  •  22
  •   Thomas Schwärzl    7 年前

    mod_rewrite 默认情况下,在alpine中随apache一起安装,因此无需再次安装。下面是如何启用 mod\U重写 在阿尔卑斯山:

    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
    
        2
  •  5
  •   Dawid Świtoń-Maniakowski    4 年前

    我想你想要工作。htaccess重写机制。 要做到这一点,您需要做两件事:

    • 在httpd中。conf通过取消注释行启用mod\u重写:

      LoadModule rewrite\u模块模块/mod\u重写。所以

    • 在httpd中。conf将工作目录的AllowOverride更改为All(不要更改每个AllowOverride,因为这是安全问题)

      允许全部覆盖

    下载httpd是一种很好的做法。从容器中配置,更改此值,然后上载新的httpd。将映像构建到同一目录时的配置:

    例如

    • 提取httpd。形态 docker运行——rm httpd:2.4 cat/usr/local/apache2/conf/httpd。配置(>);我的httpd。形态

    • 上载新的httpd。confon构建过程: 复制/我的httpd。conf/usr/local/apache2/conf/httpd。形态