Docker httpd apache и получение cgi-bin для выполнения скрипта perl

#apache #docker #perl

#apache #docker #perl

Вопрос:

Новичок в 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
  

Затем я создаю и запускаю с:

 docker build -t my-apache2 .
docker run -dit --name my-running-app -p 8080:80 my-apache2
  

Затем я перехожу к localhost:8080/cgi-bin/printenv , но вместо выполнения скрипта я получаю код, отображаемый в виде текста. Похоже, что изображение httpd поставляется с включенными скрипталиями по умолчанию. Любые идеи, пожалуйста?

Ответ №1:

Вам также необходимо включить 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"
  

Комментарии:

1. Спасибо за помощь. Руководство по apache HowTo ( httpd.apache.org/docs/2.4/howto/cgi.html#configuring ) действительно описывает это требование, но, увы, я полностью упустил его из виду: (