@tonx92

Как в докере запустить PHP-FPM, собранный через make install?

Пытаюсь собрать старую версию PHP в docker, нужен php5.4-fpm. После 3 дней мучений удалось собрать со всеми нужными зависимостями. Застрял на последнем шаге, после запуска контейнер уходит в ребут без ошибок, если в конфигах fpm что то не так выводит в лог ошибку.
Не могу понять как заставить висеть php-fpm отдельным микросервисом, ожидая запросы.
Пробовал флаги -F, -D ничего не меняется.

Dockerfile:
FROM ubuntu:24.04

RUN apt-get update -y 
RUN apt-get install -y wget build-essential libxml2-dev pkg-config libbz2-dev sqlite3 libsqlite3-dev libssl-dev libjpeg-dev libonig-dev libreadline-dev libtidy-dev libxslt-dev libzip-dev curl libcurl4-openssl-dev software-properties-common libpng-dev freetype2-demos libc-client-dev libkrb5-dev libmcrypt-dev libpq-dev

RUN wget https://ftp.openssl.org/source/old/1.0.1/openssl-1.0.1k.tar.gz
RUN tar -xzvf openssl-1.0.1k.tar.gz

WORKDIR /usr/include
RUN ln -s x86_64-linux-gnu/curl

WORKDIR /openssl-1.0.1k
RUN ./config -fPIC shared --prefix=/usr/local --openssldir=/usr/local/openssl no-ssl3
RUN make install && make install

RUN mkdir -p /opt/php-5.4.45
RUN rm -rf /usr/local/src/php5-build && mkdir /usr/local/src/php5-build
WORKDIR /usr/local/src/php5-build
RUN wget de2.php.net/distributions/php-5.4.45.tar.gz
RUN tar -vzxf php-5.4.45.tar.gz 
WORKDIR /usr/local/src/php5-build/php-5.4.45
ENV PHP_OPENSSL_DIR=/usr/local/openssl OPENSSL_LIBDIR=/usr/local/openssl OPENSSL_INCDIR=/usr/local/openssl

RUN apt-get install -y libltdl-dev
#--prefix=/opt/php-5.4.45
RUN ./configure  --with-pdo-pgsql --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --with-mcrypt --with-gd --with-pgsql --disable-rpath --enable-inline-optimization --with-bz2 --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --enable-zip --with-pcre-regex --with-mysqli --with-mysql --with-pdo-mysql --with-mysqli --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-fpm-user=www-data --with-fpm-group=www-data --enable-ftp --with-imap --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-fpm --with-openssl --with-zlib --with-imap-ssl
RUN make && make install

#RUN cp /usr/local/src/php5-build/php-5.4.45/php.ini-production /opt/php-5.4.45/lib/php.ini
ADD ./docker/my-app/php-fpm.conf /usr/local/etc/php-fpm.conf
RUN mkdir /usr/local/etc/php-fpm.d
ADD ./docker/my-app/mysite.conf /usr/local/etc/php-fpm.d/mysite.conf

ADD ./my-app /app/
WORKDIR /app

RUN cat /usr/local/etc/php-fpm.conf
RUN php-fpm -h
CMD ["/bin/sh", "-l", "-c", "php-fpm", "-D"]
EXPOSE 9000


Конфиг:
[mysite]
listen = 127.0.0.1:9000#/var/lib/php5-fpm/mysite.sock
#listen.owner = www-data
#listen.group = www-data
#listen.mode = 0660
user = www-data
group = www-data
pm = dynamic
pm.max_children = 8
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 5
pm.max_requests = 500
chdir = /
catch_workers_output = yes

php_admin_value[open_basedir] = /var/www/mysite/web:/usr/share/php5:/usr/share/php:/tmp:/usr/share/phpmyadmin:/etc/phpmyadmin:/var/lib/phpmyadmin
php_admin_value[session.save_path] = /var/www/mysite/tmp
php_admin_value[upload_tmp_dir] = /var/www/mysite/tmp
  • Вопрос задан
  • 139 просмотров
Пригласить эксперта
Ответы на вопрос 1
thewind
@thewind
php программист, front / backend developer
А просто сделать docker run на основе https://hub.docker.com/_/php/tags?page=1&name=5.4 не подходит?
Или написать docker-compose файл и указать image: php:5.4-fpm ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы