#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 ) действительно описывает это требование, но, увы, я полностью упустил его из виду: (