Skip to content

Docker Compose сборка для запуска приложений на php.

Notifications You must be signed in to change notification settings

simba77/docker-php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

docker-php

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

Выполнение команд в контейнере php

Если вам нужно выполнить команды в контейнере, например, установить зависимости с помощью команды composer install или выполнить любую другую команду можете выполнить команду

make shell

После выполнения команды откроется консоль внутри контейнера php-fpm в которой можете выполнять все необходимые команды.

Изменение версии php

Изменить версию php можно в этом файле: Dockerfile В строке FROM php:8.2-fpm-alpine замените название образа на любой из доступных здесь https://hub.docker.com/_/php/tags В большинстве случаев достаточно просто сменить цифру 8.2 на необходимую вам.