Изменение порта в контейнере php-fpm

30 April 2025

При контейнерезированном запуске NGINX + PHP-FPM + MariaDB возникла необходимость изменить порт PHP-FPM. Маппинг порта в Docker Compose не помог. Помогло изменение порта внутри контейнера.

Ниже пример Dockerfile для сборки образа с измененным портом. Основа взята у bezumkin'a.


ARG PHP_VERSION=8.1
ARG PHP_XDEBUG=1

FROM php:8.1-fpm

# Changing port in the image
RUN sed -i 's/9000/9001/g' /usr/local/etc/php-fpm.d/www.conf
RUN sed -i 's/9000/9001/g' /usr/local/etc/php-fpm.d/zz-docker.conf

COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

RUN apt update
RUN apt-get install -y zlib1g-dev libzip-dev libpng-dev libwebp-dev libjpeg62-turbo-dev zip unzip bash cron

RUN ln -sf /bin/bash /bin/sh

RUN docker-php-ext-configure gd --with-jpeg --with-webp && docker-php-ext-install gd
RUN docker-php-ext-install exif
RUN docker-php-ext-install zip
RUN docker-php-ext-install pdo_mysql

RUN echo "date.timezone=Asia/Yekaterinburg" > /usr/local/etc/php/conf.d/docker-php-ext-timezone.ini
RUN echo "memory_limit=512M" > /usr/local/etc/php/conf.d/docker-php-ext-memory.ini
RUN echo "max_file_uploads=256M" > /usr/local/etc/php/conf.d/docker-php-ext-upload.ini \
  && echo "post_max_size=256M" >> /usr/local/etc/php/conf.d/docker-php-ext-upload.ini \
  && echo "upload_max_filesize=256M" >> /usr/local/etc/php/conf.d/docker-php-ext-upload.ini

RUN if [ "$PHP_XDEBUG" = "1" ]; then \
      yes | pecl install xdebug \
          && echo "zend_extension=xdebug" > /usr/local/etc/php/conf.d/xdebug.ini \
          && echo "xdebug.mode=develop,debug" >> /usr/local/etc/php/conf.d/xdebug.ini \
          && echo "xdebug.client_host=host.docker.internal" >> /usr/local/etc/php/conf.d/xdebug.ini \
          && echo "xdebug.start_with_request=yes" >> /usr/local/etc/php/conf.d/xdebug.ini \
          && echo "xdebug.log_level=0" >> /usr/local/etc/php/conf.d/xdebug.ini; \
    fi

RUN composer global config minimum-stability alpha
RUN composer global require modmore/gitify:^2
ENV PATH=/root/.composer/vendor/bin:$PATH

EXPOSE 9001

Вот эти строки отвечают за изменение порта в образе:


# Changing port in the image
RUN sed -i 's/9000/9001/g' /usr/local/etc/php-fpm.d/www.conf
RUN sed -i 's/9000/9001/g' /usr/local/etc/php-fpm.d/zz-docker.conf