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
- Под Bitrix вместе с nuxt смотрите в bitrix.md
- Под Laravel смотрите в laravel.md
- Под Symfony смотрите в symfony.md
- Под Yii2 смотрите в yii2.md
- Под Yii3 смотрите в yii3.md
- Под Wordpress смотрите в wordpress.md
- Под ванильный php смотрите в vanilla.md
Расширение для VS Code для запуска/остановки, мониторинга контейнеров (форк расширения Container Tools - https://github.com/microsoft/vscode-containers) - https://github.com/BkycHblu-6oPwuK/vscode-containers-docky?tab=readme-ov-file
А здесь общее описания работы с скриптом
Установка
Для установки можно запустить установочный скрипт с правами суперпользователя:
Либо же можете вручую скачать бинарник (находится в bin/docky) и поместить его в и не забудьте дать ему необходимые права (команда )
Обновление скрипта происходит точно также, при выполнении команды curl - файл заменяется.
После установки проверьте работу скрипта, можете выполнить команду
Автодополнение
автоматически устанавливается в скрипте install.sh
с помощью команды
выполните для bash
Публикация 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 (задания для cron для пользователя сайта - docky, для root пользователя - root)
- symlinks - ${CONF_PATH}/app/symlinks (симлинки внутри контейнера, формируйте пути относительно структуры контейнера)
- mysql_conf - ${CONF_PATH}/mysql/my.cnf для сервисов mysql и mariadb (конфигурация для mysql и mariadb)
- postgres_conf - ${CONF_PATH}/postgres/postgres.conf (конфигурация базы данных postgres)
- supervisord_conf - ${CONF_PATH}/app/supervisord.conf (файл конфигурации для supervisord, который запускается в контейнере app и в нем можно настроить запуск любых своих процессов при запуске контейнера)
- nginx_conf (это вся конфигурация под nginx начиная с nginx.conf, включая все файлы в conf.d) - ${CONF_PATH}/nginx/conf.d
- nginx_dockerfile - ${CONF_PATH}/nginx/Dockerfile
- node_dockerfile - ${CONF_PATH}/node/Dockerfile
- app_entrypoint - ${CONF_PATH}/bin/app_entrypoint.sh (скрипт запускающийся при запуске контейнера app, в него можно добавить свои команды для выполнения при запуске контейнера)
Так же добавляются необходимые 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.
при проксировании на контейнер nginx можно передать заголовок x-forwarded-host чтобы сервер для php установил указанный в заголовках host.
php
Конфигурации для каждых из версий находятся по пути - .
Для изменения версии - измените ее в файле .env, переменая
свои конфигурации можно размещать в - .
php.ini публикуется командой:
файл будет помещен в -
Composer
Composer доступен в контейнере app. Для выполнения команд используйте:
Рабочая директория внутри контейнера определяется по следующему приоритету:
- Флаг
-w|--workdir— задаётся явно при вызове команды - Переменная
COMPOSER_WORKDIRиз файла.env - Если ничего не задано — composer запускается без явного указания директории в /var/www (site)
Xdebug
По умолчанию установлен и включен.
xdebug.ini публикуется командой:
файл будет помещен в -
Отключить xdebug можно через переменную окружения в файле docker-compose.yml в блоке environment сервиса app, установив ее в значение 1 или true
Достаточно перезапустить контейнеры.
В редких случаях, если вы уже пользовались docky до этого и у вас не отключился xdebug, то выполните команду:
Node и npm, npx
По умолчанию установлена 23 версия.
Так же по умолчанию контейнер работает на двух портах - и
При установке можно указать корневую директории для вашего фронтенда, то есть та директория, где расположен . Контейнер работает внутри данной директории и соответственно там выполняются команды.
Вы можете изменить версию и корневую директорию, поменяв значение переменных и в файле .env. Переменная в сервисе node используется в dockerfile для laravel.
Скачивание node идет с адреса - https://deb.nodesource.com/setup_${NODE_VERSION}.x, и часто подверсий там нет, указывайте целые числа или можете перейти по ссылке и проверить доступность версии.
Команды npm/npx выполняются слудующим образом:
для работы сервера разработки vite обавьте это в vite.config.js
Пакет pm2 в node контейнере
В dockerfile node устанавливается пакет pm2, для работы с ним используйте команду
Запустить сервер node js можно:
- командой pm2 -
- настроить на запуск при запуске контейнеров - для этого добавьте команду (в сервисе node) - , здесь указывается точка входа к скрипту который будет запускаться
Туннелирование локального сайта
Для туннелирования используется Cloudpub (https://cloudpub.ru/) и для того чтобы поделиться вашим локальным сайтом выполните команду:
Документация cloudpub - https://cloudpub.ru/docs
https://hub.docker.com/r/cloudpub/cloudpub
Символические ссылки
При запуске контейнера 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. Рабочая директория определяется по приоритету: флаг-w|--workdir→ переменнаяCOMPOSER_WORKDIRиз.env→ пропуск -
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
Опубликуйте сервис командой