docker compose сборка для запуска практически любых приложений на php.
Сборка создавалась для локальной разработки. Основана на *-alpine образах и имеет небольшой вес. Для работы в production режиме рекомендуется доработать самостоятельно под нужды проекта.
Сборка позволяет работать одновременно с несколькими проектами на одном компьютере избегая конфликтов в названии контейнеров и портов.
- nginx
- php-fpm
- composer
- redis
- mariadb
- ofelia
Дополнительно вы можете использовать traefik, phpmyadmin и mailhog
В качестве DOCUMENT_ROOT используется папка public т.к. большинство современных приложений используют эту папку в качестве корневой. При необходимости вы можете изменить эту папку в конфиге nginx localhost.conf
Если вам не нужны redis, mariadb или ofelia, то закомментируйте или удалите соответствующие блоки в docker-compose.yml
Конфиг php расположен тут php.ini
В качестве cron планировщика используется ofelia. Настраивается в файле docker-compose.yml в секции labels в нужном контейнере. Пример можно посмотреть в контейнере php-fpm
ofelia.enabled: "true"
ofelia.job-exec.php-cli.schedule: "@every 1m"
ofelia.job-exec.php-cli.user: www-data
ofelia.job-exec.php-cli.command: "php /app/public/cli.php"
С более подробной документацией можно ознакомиться в репозитории проекта https://github.com/mcuadros/ofelia.
По умолчанию ваш сайт будет доступен по адресу localhost:port где port - номер пора заданный в .env файле в переменной NGINX_HTTP_PORT и NGINX_HTTPS_PORT. Для доступа к сайту по домену можно использовать traefik в качестве прокси сервера.
Домен по которому будет доступен ваш локальный сайт задается в .env в переменной APP_HOST
Чтобы сайт был доступен в браузере нужно добавить в файл hosts на вашем компьютере строку с доменом и ip
127.0.0.1 test-app.loc
test-app.loc замените на свой домен который указали в файле .env.
Подробнее с конфигурацией traefik можно ознакомиться в папке traefik
Если вы не хотите использовать traefik, вам нужно будет удалить секцию networks из основного docker-compose.yml
networks:
web:
name: traefik_default
external: true
Для запуска можете использовать следующие команды
docker compose up -d
Для остановки
docker compose stop
Пересборка при изменении конфигурации
docker compose up -d --build
Если у вас установлена утилита make, то можете выполнять сокращенные команды
Запуск
make up
Остановка
make stop
Пересборка при изменении конфигурации
make rebuild
Если вам нужно выполнить команды в контейнере, например, установить зависимости с помощью команды composer install или выполнить любую другую команду можете выполнить команду
make shell
После выполнения команды откроется консоль внутри контейнера php-fpm в которой можете выполнять все необходимые команды.
Изменить версию php можно в этом файле: Dockerfile В строке FROM php:8.2-fpm-alpine замените название образа на любой из доступных здесь https://hub.docker.com/_/php/tags В большинстве случаев достаточно просто сменить цифру 8.2 на необходимую вам.