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