PHPackages                             beeralex/compose - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [CLI &amp; Console](/categories/cli)
4. /
5. beeralex/compose

ActiveLibrary[CLI &amp; Console](/categories/cli)

beeralex/compose
================

A cli wrapper over docker compose for local bitrix projects

v1.0.6(1y ago)21621MITGoCI passing

Since Apr 5Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/BkycHblu-6oPwuK/docky)[ Packagist](https://packagist.org/packages/beeralex/compose)[ RSS](/packages/beeralex-compose/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)DependenciesVersions (7)Used By (0)

Обертка под docker compose
==========================

[](#обертка-под-docker-compose)

Настроенная обертка над docker compose для локальных проектов Bitrix, Laravel.

- Под Bitrix смотрите в [bitrix.md](docs/bitrix.md)
- Под Bitrix вместе с nuxt смотрите в [bitrix.md](docs/bitrix_nuxt.md)
- Под Laravel смотрите в [laravel.md](docs/laravel.md)
- Под Symfony смотрите в [symfony.md](docs/symfony.md)
- Под Yii2 смотрите в [yii2.md](docs/yii2.md)
- Под Yii3 смотрите в [yii3.md](docs/yii3.md)
- Под Wordpress смотрите в [wordpress.md](docs/wordpress.md)
- Под ванильный php смотрите в [vanilla.md](docs/vanilla.md)

Расширение для VS Code для запуска/остановки, мониторинга контейнеров (форк расширения Container Tools - ) -

А здесь общее описания работы с скриптом `docky`

Установка
---------

[](#установка)

Для установки можно запустить установочный скрипт с правами суперпользователя:

```
curl -sSL https://raw.githubusercontent.com/BkycHblu-6oPwuK/docky/main/scripts/install.sh | sudo sh
```

Либо же можете вручую скачать бинарник (находится в bin/docky) и поместить его в `/usr/local/bin` и не забудьте дать ему необходимые права (команда `chmod +x`)

Обновление скрипта происходит точно также, при выполнении команды curl - файл заменяется.

После установки проверьте работу скрипта, можете выполнить команду `docky`

Автодополнение
--------------

[](#автодополнение)

автоматически устанавливается в скрипте install.sh

с помощью команды

```
docky completion --help
```

выполните для bash

```
docky completion bash >> ~/.bashrc
source ~/.bashrc
# или глобально если установлен пакет bash-completion.
docky completion bash | sudo tee /etc/bash_completion.d/docky
```

Публикация docker-compose.yml
-----------------------------

[](#публикация-docker-composeyml)

Команды выполняются в директории с docker-compose.yml или в любой другой дочерней, но при этом файл docker-compose.yml должен существовать (для всех команд, кроме - init и clean-cache).

Для публикации docker-compose.yml выполните команду:

```
docky init
```

Если docker-compose.yml уже существует, то будет предложено создать новый - в таком случае файл будет переименован и после этого вы перейдете к дальшейшей публикации нового файла, а иначе будет произведен выход. Сам проект размещается в директории `site`, которая создается в той же директории где находиться docker-compose.yml

Конфигурация yml через файл .env
--------------------------------

[](#конфигурация-yml-через-файл-env)

Файл автоматически создается при инициализации проекта. В него вы так же можете добавлять свои переменные и менять стандартные

```
PHP_VERSION=7.4|8.2|8.3|8.4|8.5 # по сути не фактическая версия php - используется для построения пути к dockerfile в ```_docker/app/php-{PHP_VERSION}/dockerfile```, в самом докерфайле задается фактическая версия
MYSQL_VERSION={любая версия доступная на docker hub}
MARIADB_VERSION={любая версия доступная на docker hub}
POSTGRES_VERSION={любая версия доступная на docker hub}
NODE_VERSION={любая версия доступная по ссылке - https://deb.nodesource.com/setup_${NODE_VERSION}.x}
NODE_PATH=/var/www/local/js/vite # здесь путь до package json в контейнере, поэтому указывайте вместе абсолютный путь. /var/www - это DOCUMENT_ROOT сайта в контейнере
USERGROUP={id группы пользователя (обычно 1000), по умолчанию скрипт автоматически прокидывает id группы текущего пользователя консоли, но если вы запустите скрипт из под root то автоматически пробросит 1000. Используйте эту переменную если нужно изменить группу пользователя в контейнерах app,nginx,node}
COMPOSER_WORKDIR=/var/www # рабочая директория для команды composer внутри контейнера. Если не задана, composer запускается без явного указания директории в /var/www (site). Может быть переопределена флагом -w|--workdir при вызове команды

```

Переменные окружения прокидываемые скриптом:

```
SITE_PATH - путь к директории site в директории с docker-compose.yml
DOCKER_PATH - путь к директории _docker в ~.cache/docky/_docker, либо _docker, если такая существует, в одной директории с docker-compose.yml
CONF_PATH - путь к директории _conf в одной директории с docker-compose.yml
USERGROUP - id группы текущего пользователя консоли

```

Публикация докерфайлов и файлов конфигурации
--------------------------------------------

[](#публикация-докерфайлов-и-файлов-конфигурации)

Если вам необходимо внести изменения в докерфайлы или файлы конфигурации, или добавить что то свое, то используйте команду:

```
docky publish
```

При этом если директория ./\_docker уже существует, то она будет переименована.

Можно опубликовать отдельные файлы командой:

```
docky publish --file php.ini|xdebug.ini|cron_tasks|nginx_conf|symlinks|mysql_conf|postgres_conf|supervisord_conf|app_entrypoint
docky publish --dockerfile app|nginx|node
```

Публикация происходит в директорию `${CONF_PATH}`

- 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:

```
docky publish --service node|mysql|mariadb|postgres|sphinx|redis|memcached|mailhog|phpmyadmin
```

nginx
-----

[](#nginx)

Сертификаты и ключи копируются в контейнер из /\_docker/nginx/certs/ и запись о них уже добавлена в nginx.conf.

Размещайте свои сертификаты в ${CONF\_PATH}/nginx/certs/ и добавляйте каждый сертификат через volumes в docker-compose.yml

```
- ${CONF_PATH}/nginx/certs/site:/usr/local/share/ca-certificates/site
- ${CONF_PATH}/nginx/certs/cert.crt:/usr/local/share/ca-certificates/cert.crt

```

Сейчас там используются временные самописные сертификаты которые будут действительны до ~2051 года.

Сервер одинаково настроен на работу как по http, так и по https.

Более подробно - [certificates.md](docs/certificates.md)

Выполните шаги из пункта "Импорт в windows" чтобы не было ошибок в браузере

Так же вы можете добавлять файлы конфигурации для nginx через volumes в docker-compose.yml

```
- ${CONF_PATH}/nginx/site.conf:/etc/nginx/conf.d/site.conf

```

для работы сокетов на локальном сайте в php контейнере так же устанавливается nginx который проксирует запросы на основной контейнер с nginx.

при проксировании на контейнер nginx можно передать заголовок `x-forwarded-host` чтобы сервер для php установил указанный в заголовках host.

php
---

[](#php)

Конфигурации для каждых из версий находятся по пути - `${DOCKER_PATH}/app/php-{PHP_VERSION}/`.

Для изменения версии - измените ее в файле .env, переменая `PHP_VERSION`

свои конфигурации можно размещать в - `${CONF_PATH}/app/php-{PHP_VERSION}/`.

php.ini публикуется командой:

```
docky publish --file php.ini
```

файл будет помещен в - `${CONF_PATH}/app/php-{PHP_VERSION}/php.ini`

Composer
--------

[](#composer)

Composer доступен в контейнере `app`. Для выполнения команд используйте:

```
docky composer install
docky composer require monolog/monolog
```

Рабочая директория внутри контейнера определяется по следующему приоритету:

1. Флаг `-w|--workdir` — задаётся явно при вызове команды
2. Переменная `COMPOSER_WORKDIR` из файла `.env`
3. Если ничего не задано — composer запускается без явного указания директории в /var/www (site)

```
docky composer -w /var/www/local require monolog/monolog --with-all-dependencies
docky composer require monolog/monolog
```

Xdebug
------

[](#xdebug)

По умолчанию установлен и включен.

xdebug.ini публикуется командой:

```
docky publish --file xdebug.ini
```

файл будет помещен в - `${CONF_PATH}/app/php-{PHP_VERSION}/xdebug.ini`

Отключить xdebug можно через переменную окружения `XDEBUG_DISABLED` в файле docker-compose.yml в блоке environment сервиса `app`, установив ее в значение 1 или true

```
    app:
        environment:
            XDEBUG_DISABLED: 1
```

Достаточно перезапустить контейнеры.

В редких случаях, если вы уже пользовались docky до этого и у вас не отключился xdebug, то выполните команду:

```
docky build
```

Node и npm, npx
---------------

[](#node-и-npm-npx)

По умолчанию установлена 23 версия.

Так же по умолчанию контейнер работает на двух портах - `5173` и `5174`

При установке можно указать корневую директории для вашего фронтенда, то есть та директория, где расположен `package.json`. Контейнер работает внутри данной директории и соответственно там выполняются команды.

Вы можете изменить версию `node` и корневую директорию, поменяв значение переменных `NODE_VERSION` и `NODE_PATH` в файле .env. Переменная `PHP_VERSION` в сервисе node используется в dockerfile для laravel.

Скачивание node идет с адреса - [https://deb.nodesource.com/setup\_${NODE\_VERSION}.x](https://deb.nodesource.com/setup_$%7BNODE_VERSION%7D.x), и часто подверсий там нет, указывайте целые числа или можете перейти по ссылке и проверить доступность версии.

Команды npm/npx выполняются слудующим образом:

```
docky npm {arg}
docky npx {arg}
```

для работы сервера разработки vite обавьте это в vite.config.js

```
    server: {
        host: '0.0.0.0',
        port: 5173,
        open: false,
        cors: {
            origin: '*'
        },
        hmr: {
            host: 'localhost',
        },
    }
```

Пакет pm2 в node контейнере
---------------------------

[](#пакет-pm2-в-node-контейнере)

В dockerfile node устанавливается пакет pm2, для работы с ним используйте команду

```
docky pm2 {arg}
```

Запустить сервер node js можно:

1. командой pm2 - `docky pm2 start server.js`
2. настроить на запуск при запуске контейнеров - для этого добавьте команду (в сервисе node) - `command: sh -c "pm2 start /var/www/local/js/vite/server.js --name node-server & tail -f /dev/null"`, здесь указывается точка входа к скрипту который будет запускаться

Туннелирование локального сайта
-------------------------------

[](#туннелирование-локального-сайта)

Для туннелирования используется Cloudpub () и для того чтобы поделиться вашим локальным сайтом выполните команду:

```
docky share
```

Документация cloudpub -

Символические ссылки
--------------------

[](#символические-ссылки)

При запуске контейнера app запускается скрипт - \_docker/bin/create\_simlink.sh, он создает ссылки внутри контейнера и соответственно ссылки внутри сайта распространяются и на хост и другие контейнеры.

Ссылки берутся из файла - ${DOCKER\_PATH}/app/symlinks. Структура файла должна быть такой:

```
/var/www/ /var/www/

```

Если же вам нужно дополнительные ссылки добавить, выполните команду:

```
docky publish --file symlinks
```

файл появится в - ${CONF\_PATH}/app/symlinks

формируйте все пути относительно структуры контейнера.

Создание нового домена для основного сайта
------------------------------------------

[](#создание-нового-домена-для-основного-сайта)

1. Выполните команду `docky down` или убедитесь что контейнеры остановлены
2. Для создания выполните команду `docky create domain` или `docky create domain --name {domain_name}`
3. Введите доменное имя сайта
4. Выполните команду `docky build`

Добавление записей в hosts
--------------------------

[](#добавление-записей-в-hosts)

При создании домена создается файл hosts в `${CONF_PATH}/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

В целом вы можете добавлять в него записи вида:

```
127.0.0.1 new_site

```

После этого можно выполнить команду:

```
docky hosts push
```

Но лучше выполнять команду `docky create domain`, если вы хотите чтобы создались сертификаты и конфиги для nginx

И все записи из вашего локального hosts будут добавлены в глобальный (${SYSTEM\_DISK}\\Windows\\System32\\drivers\\etc\\hosts - если wsl, или /etc/hosts - если ubuntu)

(${SYSTEM\_DISK} - скрипт через команду powershell попытается найти системный диск)

Если записи уже существуют, то дублирования не будет.

Описание всех доступных команд
------------------------------

[](#описание-всех-доступных-команд)

- `version|v` - версия программы

```
docky version
docky v
```

- `update` - обновление программы

```
docky update
```

- `init` - Создание docker-compose.yml в текущей директории и создает директорию `site`

```
docky init
```

- `publish` - Публикация файлов конфигурации в директории с docker-compose.yml, доступен флаг `service` для публикации отдельного сервиса в docker-compose.yml

```
docky publish
docky publish --service node|mysql|mariadb|postgres|sphinx|redis|memcached|mailhog|phpmyadmin
docky publish --file php.ini|xdebug.ini|cron_tasks|nginx_conf|symlinks|mysql_conf|postgres_conf|supervisord_conf
docky publish --dockerfile app|nginx|node
```

- `clean-cache` - очищает кэш директории скрипта, в ней храняться файлы конфигурации, докерфайлы

```
docky clean-cache
```

- `create site` - Создание нового сайта в директории сайта (./site/new-site.ru) для фреймворка bitrix

```
docky create site
docky create site --name {domain_name}
```

- `create domain` - Создание нового домена для вашего основного сайта

```
docky create domain
docky create domain --name {domain_name}
```

- `hosts push` - Переносит записи из вашего локального hosts файла в глобальный

```
docky hosts push
```

- `share` - Позволяет сделать сайт доступным из интернета

```
docky share
```

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

```
docky php -v
```

- `artisan` - Выполнение команды artisan в контейнере с php для фреймворка laravel

```
docky artisan {arg}
```

- `symfony` - Выполнение команды bin/console в контейнере с php для фреймворка symfony

```
docky symfony {arg}
```

- `composer` - Выполнение команды composer в контейнере с php. Рабочая директория определяется по приоритету: флаг `-w|--workdir` → переменная `COMPOSER_WORKDIR` из `.env` → пропуск

```
docky composer install
docky composer -w /var/www/local require monolog/monolog --with-all-dependencies
```

- `npm` - Выполнение команды npm в контейнере с node js если он был установлен

```
docky npm install
```

- `npx` - Выполнение команды npx в контейнере с node js если он был установлен

```
docky npx create-vite@latest my-app
```

- `pm2` - Выполнение команды pm2 в контейнере с node js если он был установлен. Команда принимает такие же аргументы как и оригинальная pm2

```
docky pm2 {arg}
```

- `reset` - сбрасывает docker-compose.yml под актуальную версию скрипта, при этом старый файл будет переименован и вы всегда можете откатить изменение

```
docky reset
```

- `И все дефолтные команды docker-compose` - Выполнение любой команды docker-compose

```
docky up -d
docky down
docky build
```

Пользователи в контейнерах
--------------------------

[](#пользователи-в-контейнерах)

- `docky` - в контейнере с php (service app), nginx, node

Настройка Redis
---------------

[](#настройка-redis)

Опубликуйте сервис командой

```
docky publish --service redis
```

Настройка memcached
-------------------

[](#настройка-memcached)

Опубликуйте сервис командой

```
docky publish --service memcached
```

###  Health Score

36

—

LowBetter than 82% of packages

Maintenance72

Regular maintenance activity

Popularity14

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~3 days

Total

7

Last Release

386d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/77bd3b8ad5192c498ba8d5a70ae80d7d73e8d13dda7989920a4fa47711fcb8c2?d=identicon)[BkycHblu-6oPwuK](/maintainers/BkycHblu-6oPwuK)

---

Top Contributors

[![BkycHblu-6oPwuK](https://avatars.githubusercontent.com/u/122775450?v=4)](https://github.com/BkycHblu-6oPwuK "BkycHblu-6oPwuK (163 commits)")

---

Tags

bitrixclidevtoolsdockerdocker-composedockerfilesdockylaravellocalphpsymfonycliDevtoolsbitrixenvironmentlocaldockerdocker-compose

### Embed Badge

![Health badge](/badges/beeralex-compose/health.svg)

```
[![Health](https://phpackages.com/badges/beeralex-compose/health.svg)](https://phpackages.com/packages/beeralex-compose)
```

###  Alternatives

[tightenco/takeout

Manage your dev dependencies with simple one-off Docker containers.

1.6k20.9k](/packages/tightenco-takeout)[fly-apps/dockerfile-laravel

Dockerfile generator and Fly.io helper.

30105.0k](/packages/fly-apps-dockerfile-laravel)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
