В материале приведён файл docker-compose.yml для запуска сервиса apache в Docker — это простейший файл docker-compose, используются volume, файлы приложения пробрасываются в контейнер из каталога src на хосте.
Порт 80 внутри контейнера мапится на внешний порт 8073 хост системы. Порт можно сменить на любой другой. Если установить 80 — сервис будет доступен на порту 80 хост системы. В этом случае Apache в контейнере будет обслуживать запросы, поступающие извне.
docker-compose.yml для запуска Apache и сайта на PHP
Файл docker-compose.yml
version: '3'
services:
apache:
image: httpd:2.4
ports:
- 8073:80
volumes:
- ./src:/usr/local/apache2/htdocs
Структура проекта, каталог, в котором выполняется сборка:
В данном случае структура самая простая: файл с инструкциями для Docker и каталог src с приложением на PHP.
Конфигурационные файлы внутрь контейнера не копируются, используются стандартные настройки.
Файл index.php, представляющий собой приложение на PHP, размещается в директории /usr/local/apache2/htdocs в контейнере, котором веб-сервер ожидает найти скрипты.
Сборку выполняем командой docker compose up
docker compose up
На скриншоте запуск процесса сборки через docker-compose.yml и результат в виде контейнера с Apache.
На хост машине процесс займёт порт 8073, процесс можно увидеть с помощью netstat
netstat -nltp | grep 8073
tcp 0 0 0.0.0.0:8073 0.0.0.0:* LISTEN 240205/docker-proxy
tcp6 0 0 :::8073 :::* LISTEN 240209/docker-proxy
На порт, на котором запустился контейнер, можно настроить проксирование запросов через Nginx, установленный на хосте (пример настроек).
По ссылке доступен файл для конфигурации nginx+apache+php-fpm.
Он более сложный чем рассмотренный, но даёт лучшую производительность и скорость работы.