В материале приведён файл docker-compose.yml для запуска приложения на PHP с использованием веб сервера nginx как фронтэнда.
Сборка состоит из двух Docker контейнеров, используется проброс портов и Docker volumes.
Файл docker-compose.yml для запуска nginx с PHP
Файл docker-compose.yml
version: '3'
services:
nginx:
image: nginx:1.13
ports:
- 8077:80
volumes:
- ./src:/usr/share/nginx/html
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
depends_on:
- php
php:
image: php:7.2-fpm
volumes:
- ./src:/usr/share/nginx/html
Образы заданы с указанием версий, для сборки также требуются файлы самого проекта в каталоге src и каталог nginx с конфигурационном файлом nginx.conf
Конфигурационный файл nginx можно взять такой же как из сборки для LAMP стэка. В нём нужно поменять настройки для корневого location с проксированием. Вместо apache задать проксирование на порт 9000. На нём будет запущен сервис php-fpm
Дополнительно может потребоваться задать настройки nginx индивидуальные для проекта. В текущей конфигурации нет apache и правила из файла .htaccess отрабатывать на будут.
Структура проекта в каталоге на хосте:
Сборка запускается при выполнении docker compose up -d
docker compose up -d
За счёт добавления ключей --force-recreate --build
можно пересобрать уже существующие контейнеры.
Это нужно если изначально возникли ошибки или если поменялся docker-compose.yml
Запущенные контейнеры на сервере:
Nginx внутри контейнера запускается на стандартном для сервиса порту 80, на хосте ему соответствует порт 8077.
Если приложение должно быть доступно извне — можно установить на сервер nginx и в конфигурационном файле сайта задать проксирование на порт 8077 (пример настройки).
Немного более сложная конфигурация с apache дополнительно.
Она универсальна и сочетает скорость работы php-fpm и поддержку .htaccess за счёт использования apache.