Docker httpd apache 并让 cgi-bin 执行 perl 脚本

Chr*_*ris 5 apache perl docker

Docker 新手,正在尝试让 cgi-bin 在 httpd 映像中工作。我的 Dockerfile 如下。SED 行将 perl 位置添加到图像附带的示例脚本的第一行:

FROM httpd:2.4.46
RUN sed -i '1c#!/usr/bin/perl' /usr/local/apache2/cgi-bin/printenv
Run Code Online (Sandbox Code Playgroud)

然后我构建并运行:

docker build -t my-apache2 .
docker run -dit --name my-running-app -p 8080:80 my-apache2
Run Code Online (Sandbox Code Playgroud)

然后,我导航到localhost:8080/cgi-bin/printenv但不是执行脚本,而是将代码显示为文本。看来 httpd 映像默认启用了 ScriptAlias。有什么想法吗?

And*_*rov 6

您还需要启用mod_cgid

FROM httpd:2.4.46
RUN sed -i '1c#!/usr/bin/perl' /usr/local/apache2/cgi-bin/printenv
RUN chmod +x /usr/local/apache2/cgi-bin/printenv
CMD httpd-foreground -c "LoadModule cgid_module modules/mod_cgid.so"
Run Code Online (Sandbox Code Playgroud)