Источник: php.dragomano.ru
Структура каталогов:
~/develop/web/project/
nginx/ - сервис web-сервера
php-fpm/ - сервис php8.2
mysql/ - сервис mysql
I. Создание сервиса Nginx
i.1. Узнаем версию docker compose:
$ docker compose version
Docker Compose version v2.25.0
i.2. В каталоге сервиса nginx создаем docker-compose.yml-файл следующего содержания:
version: '2.25.0'
# Services
services:
# Nginx Service
nginx:
image: nginx:1.21
ports:
- 80:80
i.3. Переходим каталог `~/develop/web/project/nginx`:
$ cd ~/develop/web/project/nginx
i.4. Запускаем наш контейнер на выполнение в фоновом (`-d`) режиме:
$ docker compose up -d
i.5. Просматриваем контейнеры запущенные в данный момент:
$ docker compose ps
i.6. Проверяем работу нашего сервиса:
$ wget http://localhost:80
В результате выполнения в каталоге */nginx появится файл index.html, его можно прочитать любым текстовым редактором nano, vim или др.
i.7. Для остановки контейнера выполняем:
$ docker compose stop
P.S. Разница между контейнером и сервисом следующая, сервис — один из компонентов приложения, перечисленных в docker-compose.yml. Каждый сервис ссылается на образ, который используется для запуска и остановки контейнеров на основе этого образа.
i.8. Доступ к оболочке командной строки выполняемого контейнера:
$ docker compose exec nginx bash
II. Создание сервиса Nginx + PHP-FPM
ii.1. Перейдите в каталог `project/php-fpm`:
$ cd ~/develop/web/project/php-fpm
... и создайте docker-compose.yml - файл, следующего содержания: