Download the PHP package beeralex/compose without Composer
On this page you can find all versions of the php package beeralex/compose. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download beeralex/compose
More information about beeralex/compose
Files in beeralex/compose
Package compose
Short Description A cli wrapper over docker compose for local bitrix projects
License MIT
Informations about the package compose
Обертка под docker compose
Настроенная обертка над docker compose для локальных проектов Bitrix, Laravel.
- Под Bitrix смотрите в bitrix.md
- Под Laravel смотрите в laravel.md
- Под Symfony смотрите в symfony.md
- Под ванильный php смотрите в vanilla.md
А здесь общее описания работы с скриптом
Установка
Для установки можно запустить установочный скрипт с правами суперпользователя:
Либо же можете вручую скачать бинарник (находится в bin/docky) и поместить его в и не забудьте дать ему необходимые права (команда )
Обновление скрипта происходит точно также, при выполнении команды curl - файл заменяется.
После установки проверьте работу скрипта, можете выполнить команду
Публикация docker-compose.yml
Команды выполняются в директории с docker-compose.yml или в любой другой дочерней, но при этом файл docker-compose.yml должен существовать (для всех команд, кроме - init и clean-cache).
Для публикации docker-compose.yml выполните команду:
Если docker-compose.yml уже существует, то будет предложено создать новый - в таком случае файл будет переименован и после этого вы перейдете к дальшейшей публикации нового файла, а иначе будет произведен выход. Сам проект размещается в директории , которая создается в той же директории где находиться docker-compose.yml
Конфигурация yml через файл .env
Файл автоматически создается при инициализации проекта. В него вы так же можете добавлять свои переменные и менять стандартные
_docker/app/php-{PHP_VERSION}/dockerfile
Переменные окружения прокидываемые скриптом:
Публикация докерфайлов и файлов конфигурации
Если вам необходимо внести изменения в докерфайлы или файлы конфигурации, или добавить что то свое, то используйте команду:
При этом если директория ./_docker уже существует, то она будет переименована.
Можно опубликовать отдельные файлы командой:
Публикация происходит в директорию
- php.ini|xdebug.ini|app-dockerfile - ${CONF_PATH}/app/php-${PHP_VERSION}/*
- cron_tasks - ${CONF_PATH}/app/cron
- symlinks - ${CONF_PATH}/app/symlinks
- mysql_conf - ${CONF_PATH}/mysql/my.cnf для сервисов mysql и mariadb
- postgres_conf - ${CONF_PATH}/postgres/postgres.conf
- supervisord_conf - ${CONF_PATH}/app/supervisord.conf
- nginx_conf - ${CONF_PATH}/nginx/conf.d
- nginx_dockerfile - ${CONF_PATH}/nginx/Dockerfile
- node_dockerfile - ${CONF_PATH}/node/Dockerfile
Так же добавляются необходимые volumes в сервисы docker-compose.yml
опубликовать отдельный сервис в docker-compose.yaml:
nginx
Сертификаты и ключи копируются в контейнер из /_docker/nginx/certs/ и запись о них уже добавлена в nginx.conf.
Размещайте свои сертификаты в ${CONF_PATH}/nginx/certs/ и добавляйте каждый сертификат через volumes в docker-compose.yml
Сейчас там используются временные самописные сертификаты которые будут действительны до ~2051 года.
Сервер одинаково настроен на работу как по http, так и по https.
Более подробно - certificates.md
Выполните шаги из пункта "Импорт в windows" чтобы не было ошибок в браузере
Так же вы можете добавлять файлы конфигурации для nginx через volumes в docker-compose.yml
для работы сокетов на локальном сайте в php контейнере так же устанавливается nginx который проксирует запросы на основной контейнер с nginx.
php
Конфигурации для каждых из версий находятся по пути - .
Для изменения версии - измените ее в файле .env, переменая
свои конфигурации можно размещать в - .
php.ini публикуется командой:
файл будет помещен в -
Xdebug
По умолчанию установлен.
xdebug.ini публикуется командой:
файл будет помещен в -
Node и npm, npx
По умолчанию установлена 23 версия.
Так же по умолчанию контейнер работает на двух портах - и
При установке можно указать корневую директории для вашего фронтенда, то есть та директория, где расположен . Контейнер работает внутри данной директории и соответственно там выполняются команды.
Вы можете изменить версию и корневую директорию, поменяв значение переменных и в файле .env
Скачивание node идет с адреса - https://deb.nodesource.com/setup_${NODE_VERSION}.x, и часто подверсий там нет, указывайте целые числа или можете перейти по ссылке и проверить доступность версии.
Команды npm/npx выполняются слудующим образом:
для работы сервера разработки vite обавьте это в vite.config.js
Пакет pm2 в node контейнере
В dockerfile node устанавливается пакет pm2, для работы с ним используйте команду
Запустить сервер node js можно:
- командой pm2 -
- настроить на запуск при запуске контейнеров - для этого добавьте команду (в сервисе node) - , здесь указывается точка входа к скрипту который будет запускаться
Туннелирование локального сайта
Для туннелирования используется Expose (https://github.com/beyondcode/expose) и для того чтобы поделиться вашим локальным сайтом выполните команду:
Сайт будет доступен 1 час, после этого команду можно выполнить заново.
привер флагов expose для проброса через команду docky share:
--auth
--server
--subdomain
--domain
--server-host
--server-port
- ...
Документация expose - https://expose.dev/docs/introduction
Символические ссылки
При запуске контейнера app запускается скрипт - _docker/bin/create_simlink.sh, он создает ссылки внутри контейнера и соответственно ссылки внутри сайта распространяются и на хост и другие контейнеры.
Ссылки берутся из файла - ${DOCKER_PATH}/app/symlinks. Структура файла должна быть такой:
Если же вам нужно дополнительные ссылки добавить, выполните команду:
файл появится в - ${CONF_PATH}/app/symlinks
формируйте все пути относительно структуры контейнера.
Создание нового домена для основного сайта
- Выполните команду или убедитесь что контейнеры остановлены
- Для создания выполните команду или
- Введите доменное имя сайта
- Выполните команду
Добавление записей в hosts
При создании домена создается файл hosts в А так же необходимые конфиги для nginx и сертификаты для этого домена в
- ${CONF_PATH}/app/nginx/${domain}.conf
- ${CONF_PATH}/nginx/conf.d/${domain}.conf
- ${CONF_PATH}/nginx/conf.d/snippets/${domain}.conf
- ${CONF_PATH}/nginx/certs/${domain}/*
и необходимые volumes для этих файлов в docker-compose.yml
В целом вы можете добавлять в него записи вида:
После этого можно выполнить команду:
Но лучше выполнять команду , если вы хотите чтобы создались сертификаты и конфиги для nginx
И все записи из вашего локального hosts будут добавлены в глобальный (${SYSTEM_DISK}\Windows\System32\drivers\etc\hosts - если wsl, или /etc/hosts - если ubuntu)
(${SYSTEM_DISK} - скрипт через команду powershell попытается найти системный диск)
Если записи уже существуют, то дублирования не будет.
Описание всех доступных команд
-
version|v
- версия программы -
update
- обновление программы -
init
- Создание docker-compose.yml в текущей директории и создает директорию -
publish
- Публикация файлов конфигурации в директории с docker-compose.yml, доступен флаг для публикации отдельного сервиса в docker-compose.yml -
clean-cache
- очищает кэш директории скрипта, в ней храняться файлы конфигурации, докерфайлы -
create site
- Создание нового сайта в директории сайта (./site/new-site.ru) для фреймворка bitrix -
create domain
- Создание нового домена для вашего основного сайта -
hosts push
- Переносит записи из вашего локального hosts файла в глобальный -
share
- Позволяет сделать сайт доступным из интернета -
php
- Выполнение команды php в контейнере с php -
artisan
- Выполнение команды artisan в контейнере с php для фреймворка laravel -
symfony
- Выполнение команды bin/console в контейнере с php для фреймворка symfony -
composer
- Выполнение команды composer в контейнере с php -
npm
- Выполнение команды npm в контейнере с node js если он был установлен -
npx
- Выполнение команды npx в контейнере с node js если он был установлен -
pm2
- Выполнение команды pm2 в контейнере с node js если он был установлен. Команда принимает такие же аргументы как и оригинальная pm2 -
reset
- сбрасывает docker-compose.yml под актуальную версию скрипта, при этом старый файл будет переименован и вы всегда можете откатить изменение И все дефолтные команды docker-compose
- Выполнение любой команды docker-compose
Пользователи в контейнерах
docky
- в контейнере с php (service app), nginx, node
Настройка Redis
Опубликуйте сервис командой
Настройка memcached
Опубликуйте сервис командой