PHP-FPM (менеджер процессов FastCGI) — это высокоэффективная и популярная реализация PHP FastCGI. В сочетании с Docker он обеспечивает простое развертывание и управление приложениями PHP. В этой статье мы рассмотрим различные методы использования PHP-FPM с Docker, сопровождаемые примерами кода.
- Метод 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
- Метод 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, что обеспечивает бесперебойную связь между ними.
- Метод 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 \
...
- Метод 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 и управление ими, сделав их масштабируемыми, переносимыми и эффективными.