Docker устанавливает php5.6 и lighttpd в Ubuntu 16.04 - PullRequest
0 голосов
/ 01 марта 2019

Из-за EOL в Ubuntu 14.04 я пытаюсь перейти с 14.04 на 16.04.К сожалению, 16.04 LTS поддерживает php 7 по умолчанию, и наша база кода написана на PHP 5. Библиотеки, связанные с PHP 5, такие как php5-cgi php5-mysql php5-curl, больше не поддерживаются в Xenial.Поэтому я пытаюсь использовать PHP 5.6, чтобы на данный момент не было никаких изменений в коде.

Мой файл Docker имеет следующий код, который устанавливает только lighttpd и php5.6.

FROM ubuntu:16.04

RUN apt-get update -y

ENV DEBIAN_FRONTEND noninteractive

устанавливает php5.6 и веб-сервер

RUN apt-get purge `dpkg -l | grep php| awk '{print $2}' | tr "\n" " "` \
    && apt-get install -y software-properties-common \
    && LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php \
    && apt-get update -y \
    && apt-get purge --auto-remove ubuntu-core-launcher \
    && apt-get install -y lighttpd php5.6 php5.6-fpm php5.6-cgi

RUN apt-get install -y vim net-tools

RUN mkdir /srv/app && mkdir /srv/run

WORKDIR /srv/app

ADD . /srv/app

изменяет разрешения дляфайлы lighttpd

RUN chmod -R 777 /var/log/lighttpd && chmod -R 777 /var/cache/lighttpd && chmod -R 775 /srv/run
RUN touch /srv/run/lighttpd.pid && chmod 777  /srv/run/lighttpd.pid

конфигурация lighttpd

RUN sed -i -e "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g" /etc/php/5.6/fpm/php.ini

RUN sed -i -e "s/server.document-root/#server.document-root/g" /etc/lighttpd/lighttpd.conf \
    && sed -i -e 's/\/var\/run\/lighttpd.pid/\/srv\/run\/lighttpd.pid/g' /etc/lighttpd/lighttpd.conf \
    && sed -i -e "s/80/8888/g" /etc/lighttpd/lighttpd.conf \
    && echo "server.document-root = \"/srv/app\"" >> /etc/lighttpd/lighttpd.conf \
    && echo "server.network-backend = \"writev\"" >> /etc/lighttpd/lighttpd.conf \
    && echo "server.modules += (\"mod_fastcgi\")" >> /etc/lighttpd/lighttpd.conf

EXPOSE 8888

ENTRYPOINT ["lighttpd", "-D", "-f", "/etc/lighttpd/lighttpd.conf"]

Команда запуска: docker run -d -p 8888: 8888 test-image: 4.0

У меня есть индекс.html - код Hello world в моей рабочей папке, и после запуска я могу получить index.html на моем localhost: 8888 / index.html У меня также есть index.php, который отображает phpinfo () и когда я пытаюсь использовать localhost:8888 / index.php, я получаю сообщение об ошибке 403.

Я также попытался добавить следующие строки в Dockerfile:

RUN mv /etc/lighttpd/conf-available/15-fastcgi-php.conf /etc/lighttpd/conf-enabled

RUN sed -i -e "s/php-cgi/php-cgi5.6/g" /etc/lighttpd/conf-enabled/15-fastcgi-php.conf

После того, как сборка и запуск сервера завершаются немедленно, Docker ps-a присваивает статус «Exited» (0).

Было бы полезно, если бы кто-нибудь мог помочь мне понять, как заставить мой php-код работать с этой конфигурацией докера.Спасибо.

...