docker-compose.yml для запуска nginx с PHP


В материале приведён файл 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.yml для запуска nginx с PHP


Сборка запускается при выполнении docker compose up -d

docker compose up -d



За счёт добавления ключей --force-recreate --build можно пересобрать уже существующие контейнеры.

Это нужно если изначально возникли ошибки или если поменялся docker-compose.yml



Запущенные контейнеры на сервере:

nginx + php-fpm в docker


Nginx внутри контейнера запускается на стандартном для сервиса порту 80, на хосте ему соответствует порт 8077.

Если приложение должно быть доступно извне — можно установить на сервер nginx и в конфигурационном файле сайта задать проксирование на порт 8077 (пример настройки).



Немного более сложная конфигурация с apache дополнительно.

Она универсальна и сочетает скорость работы php-fpm и поддержку .htaccess за счёт использования apache.

Сказать спасибо