Изучение PHP-FPM Docker: методы и примеры кода

PHP-FPM (менеджер процессов FastCGI) — это высокоэффективная и популярная реализация PHP FastCGI. В сочетании с Docker он обеспечивает простое развертывание и управление приложениями PHP. В этой статье мы рассмотрим различные методы использования PHP-FPM с Docker, сопровождаемые примерами кода.

  1. Метод 1. Создание базового Docker-контейнера PHP-FPM

Для начала вам необходимо создать файл Dockerfile, который настраивает среду PHP-FPM. Вот пример:

FROM php:7.4-fpm
# Install additional dependencies if required
RUN apt-get update && apt-get install -y \
    package1 \
    package2 \
    ...
# Copy application code
COPY . /var/www/html
# Set appropriate permissions
RUN chown -R www-data:www-data /var/www/html
# Expose the PHP-FPM port
EXPOSE 9000
# Start PHP-FPM
CMD ["php-fpm"]

Чтобы создать образ Docker, перейдите в каталог, содержащий файл Dockerfile, и запустите:

docker build -t my-php-fpm .

Чтобы запустить контейнер PHP-FPM, выполните:

docker run -p 9000:9000 my-php-fpm
  1. Метод 2: использование Docker Compose для PHP-FPM и Nginx

Если вы хотите объединить PHP-FPM с Nginx для типичной настройки веб-приложения, Docker Compose может упростить этот процесс. Вот пример файла docker-compose.yml:

version: '3'
services:
  php:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/var/www/html
    networks:
      - my-network
  nginx:
    image: nginx
    ports:
      - 80:80
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    networks:
      - my-network
networks:
  my-network:

В этом примере служба PHP-FPM определяется вместе со службой Nginx, что обеспечивает бесперебойную связь между ними.

  1. Метод 3: использование готовых образов Docker PHP-FPM

В качестве альтернативы вы можете использовать готовые образы Docker PHP-FPM, доступные в Docker Hub. Эти изображения поставляются с уже настроенным PHP-FPM и могут быть настроены в соответствии с вашими требованиями. Вот пример использования официального образа PHP-FPM:

FROM php:7.4-fpm
# Install additional dependencies if required
RUN apt-get update && apt-get install -y \
    package1 \
    package2 \
    ...
  1. Метод 4. Использование PHP-FPM с Docker Swarm

Если вы работаете с Docker Swarm для оркестрации, вы можете развернуть PHP-FPM как сервис в кластере Swarm. Вот пример команды для создания службы PHP-FPM:

docker service create \
  --name my-php-service \
  --replicas 3 \
  --publish 9000:9000 \
  my-php-fpm

В этой статье мы рассмотрели несколько методов использования PHP-FPM с Docker: от создания базовых контейнеров PHP-FPM до интеграции с Nginx с помощью Docker Compose. Мы также обсудили использование готовых образов PHP-FPM и развертывание PHP-FPM в качестве службы в Docker Swarm. Приняв эти методы, вы сможете упростить развертывание приложений PHP и управление ими, сделав их масштабируемыми, переносимыми и эффективными.