{"id":27979334,"url":"https://github.com/bkychblu-6opwuk/compose","last_synced_at":"2025-05-08T02:52:16.352Z","repository":{"id":257804791,"uuid":"864964343","full_name":"BkycHblu-6oPwuK/compose","owner":"BkycHblu-6oPwuK","description":"A cli wrapper over docker compose for local bitrix projects","archived":false,"fork":false,"pushed_at":"2025-05-05T13:38:14.000Z","size":14577,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-08T02:52:09.679Z","etag":null,"topics":["bitrix","bitrix-cms","bitrix-compose","bitrix-docker","cli","devtools","docker","docker-compose","local"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BkycHblu-6oPwuK.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-09-29T16:29:02.000Z","updated_at":"2025-05-05T13:38:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"ef4a02e6-3910-482d-8b48-64d4ba7ade7a","html_url":"https://github.com/BkycHblu-6oPwuK/compose","commit_stats":null,"previous_names":["bkychblu-6opwuk/compose"],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BkycHblu-6oPwuK%2Fcompose","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BkycHblu-6oPwuK%2Fcompose/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BkycHblu-6oPwuK%2Fcompose/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BkycHblu-6oPwuK%2Fcompose/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BkycHblu-6oPwuK","download_url":"https://codeload.github.com/BkycHblu-6oPwuK/compose/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252989937,"owners_count":21836666,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitrix","bitrix-cms","bitrix-compose","bitrix-docker","cli","devtools","docker","docker-compose","local"],"created_at":"2025-05-08T02:52:15.604Z","updated_at":"2025-05-08T02:52:16.346Z","avatar_url":"https://github.com/BkycHblu-6oPwuK.png","language":"Go","readme":"# Docker Compose for Bitrix\n\nНастроенная обертка над docker compose для локальных проектов bitrix \n\nnginx + php (7.4, 8.2, 8.3, 8.4) + mysql + node 23 версии\n\nДля установки можно запустить установочный скрипт с правами суперпользователя:\n\n```bash\ncurl -sSL https://raw.githubusercontent.com/BkycHblu-6oPwuK/compose/main/scripts/install.sh | sudo sh\n```\nЛибо же можете вручую скачать бинарник (находится в build/docky) и поместить его в ```/usr/local/bin``` и не забудьте дать ему необходимые права (команда ```chmod +x```)\n\nОбновление скрипта происходит точно также, при выполнении команды curl - файл заменяется.\n\nПосле установки проверьте работу скрипта, можете выполнить команду ```docky --help```\n\n## Публикация docker-compose.yml\n\nКоманды выполняются в директории с docker-compose.yml или в любой другой дочерней, но при этом файл docker-compose.yml должен существовать (для всех команд, кроме - init и clean-cache).\n\nДля публикации docker-compose.yml выполните команду:\n\n```bash\ndocky init\n```\n\nЕсли docker-compose.yml уже существует, то будет предложено создать новый - в таком случае файл будет переименован и после этого вы перейдете к дальшейшей публикации нового файла, а иначе будет произведен выход.\nСам сайт размещается в директории ```site```, которая создается в той же директории где находиться docker-compose.yml\n\nШаги установки:\n\n1. Выбрать версию php\n2. Выбрать версию mysql - 5.7 или 8.0\n3. Устанавливать ли node.js - Y или N, если установите Y, то будет создан сервис с node js 23 версии\n    1. Если будет устанавливаться node.js, то нужно указать корневую директорию для него, то есть директория содержащая файл package.json. Путь указывается относительно корня сайта - local/js/vite или пустое поле если package.json в корне сайта.\n4. Устанавливать ли sphinx - Y или N, если установите Y, то будет создан сервис с shphinx версии 2.2.11\n\nПосле этого в директории где выполнялась команда появиться docker-compose.yml файл с настроенными сервисами.\n\n## Конфигурация yml через файл .env\n\nВ этом файле задается версия php, mysql, node, путь к package json и путь к сайту если необходимо заменить стандартный\n\n```\nPHP_VERSION=7.4|8.2|8.3|8.4 # по сути не фактическая версия php - используется для построения пути к dockerfile в ```_docker/app/php-{PHP_VERSION}/dockerfile```, в самом докерфайле задается фактическая версия\nMYSQL_VERSION={любая версия доступная на docker hub}\nNODE_VERSION={любая версия доступная по ссылке - https://deb.nodesource.com/setup_${NODE_VERSION}.x}\nNODE_PATH=/var/www/local/js/vite # здесь путь до package json в контейнере, поэтому указывайте вместе абсолютный путь. /var/www - это DOCUMENT_ROOT сайта в контейнере\nSITE_PATH={абсолютный или относительный путь к директории сайта} # указывайте если не хотите размещать сайт в директории site по умолчанию\n```\n\n## Публикация докерфайлов и файлов конфигурации\n\nЕсли вам необходимо внести изменения в докерфайлы или файлы конфигурации, или добавить что то свое, то используйте команду:\n\n```bash\ndocky publish\n```\n\nПри этом если директория ./_docker уже существует, то она будет переименована.\n\n## SSL сертификаты для nginx\n\nСертификаты и ключи копируются в контейнер из /_docker/nginx/certs/ и запись о них уже добавлена в nginx.conf.\n\nСвои сертификаты вы так же можете помещать в /_docker/nginx/certs/ и после этого делать build.\n\nСейчас там используются временные самописные сертификаты которые будут действительны до ~2051 года.\n\nСервер одинаково настроен на работу как по http, так и по https.\n\nБолее подробно - https://github.com/BkycHblu-6oPwuK/compose/tree/main/internal/files/_docker/nginx\n\n## php\n\nДоступные версии php - 7.4, 8.2, 8.3, 8.4.\n\nКонфигурации для каждых из версий находятся по пути - ``` ./_docker/app/php-{PHP_VERSION}/ ```.\n\nДля изменения версии - измените ее в файле .env, переменая ```PHP_VERSION```\n\n## Xdebug\n\nПо умолчанию установлен.\n\nЛибо же проверьте установку пакетов в dockerfile \n\n```dockerfile\nRUN pecl install xdebug \u0026\u0026 \\\n    docker-php-ext-enable xdebug\n```\n \nсервис app в docker-compose yml должен выглядеть вот так\n\n```\napp:\n    build:\n        context: ${DOCKER_PATH}\n        dockerfile: ${DOCKER_PATH}/app/php-${PHP_VERSION}/Dockerfile\n        args:\n            USERGROUP: ${USERGROUP}\n    volumes:\n        - ${SITE_PATH}:/var/www\n        - ${DOCKER_PATH}/app/php-${PHP_VERSION}/php.ini:/usr/local/etc/php/conf.d/php.ini\n        - ${DOCKER_PATH}/app/php-${PHP_VERSION}/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini # xdebug ini\n        - ${DOCKER_PATH}/app/php-fpm.conf:/usr/local/etc/php-fpm.d/zzzzwww.conf\n        - ${DOCKER_PATH}/app/nginx:/etc/nginx/conf.d\n    ports:\n        - 9000:9000\n    environment: # переенные для xdebug\n        PHP_IDE_CONFIG: serverName=xdebugServer\n        XDEBUG_TRIGGER: testTrig\n    depends_on:\n        - mysql\n    networks:\n        - compose\n    extra_hosts:\n        - host.docker.internal:host-gateway # extra host\n    container_name: app\n```\n\nпубликуйте файлы конфигурации и настраивайте ```_docker/app/php-${PHP_VERSION}/xdebug.ini``` по своему усмотрению\n\n## Cron\n\nПо умолчанию cron включен и выполняется задание на запуск файла ```/var/www/bitrix/modules/main/tools/cron_events.php```\n\nЕсли необходимо добавить задания, то сделайте публикацию докерфайлов и файлов конфигурации\n\n```bash\ndocky publish\n```\n\nЗапись заданий осуществляйте в:\n- `_docker/app/cron/appuser.txt` - для пользователя сайта\n- `_docker/app/cron/root.txt` - для root пользователя\n\nвыполните команду\n\n```bash\ndocky build\n```\n\n## Nginx в php контейнере\n\nДля работы с сокетами в php кентейнер был установлен nginx который проксирует запросы на контейнер nginx.\n\nnginx.conf для контейнера php лежит в _docker/app/nginx.conf\n\n## Mysql\n\nВерсия mysql меняется в файле .env, переменная ```MYSQL_VERSION```, версия любая доступная на docker hub для образа mysql\n\nПо умолчанию база данных храниться в томе (volumes) mysql_data, если хотите хранить базу локально в директории, то замените mysql_data на вашу директорию, например - ./tmp/db\n\nТак же в сервис прокидывается файл конфигурации my.cnf, он располагается в ./_docker/mysql/my.cnf - туда вы можете вносить свои правки.\n\n## Node и npm, npx\n\nПо умолчанию установлена 23 версия.\n\nТак же по умолчанию контейнер работает на двух портах - ``` 5173 ``` и ``` 5174 ```\n\nПри установке можно указать корневую директории для вашего фронтенда, то есть та директория, где расположен ``` package.json ```. Контейнер работает внутри данной директории и соответственно там выполняются команды.\n\nВы можете изменить версию ``` node ```  и корневую директорию, поменяв значение переменных ``` NODE_VERSION ``` и ``` NODE_PATH ``` в файле .env\n\nСкачивание node идет с адреса - https://deb.nodesource.com/setup_${NODE_VERSION}.x, и часто подверсий там нет, указывайте целые числа или можете перейти по ссылке и проверить доступность версии.\n\nКоманды npm/npx выполняются слудующим образом:\n```bash\ndocky npm {arg}\ndocky npx {arg}\n```\n\n## Пакет pm2 в node контейнере\n\nВ dockerfile node устанавливается пакет pm2, для работы с ним используйте команду\n\n```bash \ndocky pm2 {arg}\n```\n\nЗапустить сервер node js можно:\n\n1. командой pm2 - ```docky pm2 start server.js```\n2. настроить на запуск при запуске контейнеров - для этого добавьте команду (в сервисе node) - ``` command: sh -c \"pm2 start /var/www/local/js/vite/server.js --name node-server \u0026 tail -f /dev/null\" ```, здесь указывается точка входа к скрипту который будет запускаться\n\n## Почта\n\nДля отправки почты настроен SMTP клиент  - ```msmtp```\n\nДля завершения настройки вам необходимо добавить вашу почту (в поля user и from) и пароль в файл:\n\n- `_docker/app/msmtprc`\n\nПо умолчанию в этом файле заготовка под почту яндекса, для других сервисов просто сделайте новый блок аккаунта на основе yandex и замените имя аккаунта в строке ```account default```, тогда ваш аккаунт будет по умолчанию использоваться при отправке почты.\n\nЕсли почта не отправляется или в проверке системы написано что почта не работает, то проверьте логи ```msmtp``` в контейнере, которые находятся в файле ```/home/appuser/msmtp.log```. Вероятнее всего произошла ошибка авторизации или почтовый сервис отклюнил отправку из-за подозрений в спаме.\n\n## Туннелирование локального сайта\n\nДля туннелирования используется Expose (https://github.com/beyondcode/expose) и для того чтобы поделиться вашим локальным сайтом выполните команду:\n\n```bash\ndocky share\n```\n\nСайт будет доступен 1 час, после этого команду можно выполнить заново.\n\nдоступные флаги expose для проброса через команду docky share:\n\n- `--auth`\n- `--server`\n- `--subdomain`\n- `--domain`\n- `--server-host`\n- `--server-port`\n\nДокументация expose - https://expose.dev/docs/introduction\n\n## Sphinx (поисковая система)\n\nsphinx (версия 2.2.11) является сервисом в docker-compose.yml (добавляется при установке) и собирается на основе Dockerfile из _docker/sphinx/Dockerfile, где так же лежит и файл конфигурации sphinx.conf.\n\nПосле запуска контейнеров можно подключаться к sphinx:\n\n```\nsphinx:9306 - протокол MySql\nsphinx:9312 - стандартный протокой\n```\n\n## Создание новых сайтов\n\n0. Выполните команду ```docky down``` или убедитесь что контейнеры остановлены\n1. Для создания сайта выполните команду ``` docky create site ```\n2. Введите доменное имя сайта\n3. Проверьте что все создано (в директории вашего сайта должна была появиться директории с названием введенного вашего доменного имени)\n4. Выполните команду ``` docky build ```\n\n## Символические ссылки\n\nПри запуске контейнера app запускается скрипт - _docker/bin/create_simlink.sh, он создает ссылки внутри контейнера и соответственно ссылки внутри сайта распространяются и на хост и другие контейнеры.\n\nСсылки берутся из файла - _docker/app/simlinks. Структура файла должна быть такой:\n\n```\n/var/www/bitrix /var/www/\u003cdomain\u003e/bitrix\n/var/www/local /var/www/\u003cdomain\u003e/local\n/var/www/upload /var/www/\u003cdomain\u003e/upload\n```\n\nСоответственно при добавлении сайта автоматически добавляются символические ссылки на каталоги - bitrix, local, upload для введенного домена.\n\nЕсли же вам нужно дополнительные ссылки добавить, то формируйте все пути относительно структуры контейнера. После этого необходимо выполнить команду:\n\n```bash\ndocky build\n```\n\n## Создание нового домена для основного сайта\n\n0. Выполните команду ```docky down``` или убедитесь что контейнеры остановлены\n1. Для создания выполните команду ``` docky create domain ```\n2. Введите доменное имя сайта\n3. Выполните команду ``` docky build ```\n\n## Добавление записей в hosts \n\nПри создании сайта или домена создается файл hosts в директории с docker-compose.yml\n\nВ целом вы можете добавлять в него записи вида:\n\n```\n127.0.0.1 new_site\n```\n\nПосле этого можно выполнить команду:\n\n```bash\ndocky hosts push\n```\n\nНо лучше выполнять команду ``` docky create domain ```, если вы хотите чтобы создались сертификаты и конфиги для nginx\n\nИ все записи из вашего локального hosts будут добавлены в глобальный (${SYSTEM_DISK}\\Windows\\System32\\drivers\\etc\\hosts - если wsl, или /etc/hosts - если ubuntu)\n\n(${SYSTEM_DISK} - скрипт через команду powershell попытается найти системный диск)\n\nЕсли записи уже существуют, то дублирования не будет.\n\n## Описание всех доступных команд\n\n- `init` - Создание docker-compose.yml в текущей директории и создает директорию ```site```\n```bash\ndocky init\n```\n- `publish` - Публикация файлов конфигурации в директории с docker-compose.yml, доступен флаг ``` service ``` для публикации отдельного сервиса в docker-compose.yml (node или sphinx)\n```bash\ndocky publish\ndocky publish --service node|sphinx\n```\n- `clean-cache` - очищает кэш директории скрипта, в ней храняться файлы конфигурации, докерфайлы\n```bash\ndocky clean-cache\n```\n- `upgrade` - изменяет docker-compose.yml под вторую версия скрипта, при этом старый файл будет переименован и вы всегда можете откатить изменение\n```bash\ndocky upgrade\n```\n- `create site` - Создание нового сайта в директории сайта (./site/new-site.ru)\n```bash\ndocky create site\n```\n- `create domain` - Создание нового домена для вашего основного сайта\n```bash\ndocky create domain\n```\n- `hosts push` - Переносит записи из вашего локального hosts файла в глобальный\n```bash\ndocky hosts push\n```\n- `share` - Позволяет сделать сайт доступным из интернета\n```bash\ndocky share\n```\n- `php` - Выполнение команды php в контейнере с php\n```bash\ndocky php -v\n```\n- `composer` - Выполнение команды composer в контейнере с php\n```bash\ndocky composer install\n```\n- `npm` - Выполнение команды npm в контейнере с node js если он был установлен\n```bash\ndocky npm install\n```\n- `npx` - Выполнение команды npx в контейнере с node js если он был установлен\n```bash\ndocky npx create-vite@latest my-app\n```\n- `pm2` - Выполнение команды pm2 в контейнере с node js если он был установлен. Команда принимает такие же аргументы как и оригинальная pm2\n```bash\ndocky pm2 {arg}\n```\n- `И все дефолтные команды docker-compose` - Выполнение любой команды docker-compose\n```bash\ndocky up -d\ndocky down\ndocky build\n```\n\n## Пользователи в контейнерах\n\n- `docky` - в контейнере с php (service app), nginx, node\n\n## Настройка Redis\n\nДля настройки redis выполните следующие шаги:\n\n1. Добавьте сервис сервера redis в docker-compose.yml\n```yml\n  redis:\n    image: redis\n    ports:\n      - \"6379:6379\"\n    command: [\"redis-server\", \"--appendonly\", \"yes\"]\n    volumes:\n      - redis_data:/data\n    container_name: redis\n    networks:\n      - compose\nvolumes:\n  ...\n  redis_data:\n```\n2. В dockerfile вашего app сервиса (_docker/app/php-{PHP_VERSION}/Dockerfile) добавьте установку php модуля redis и igbinary\n```dockerfile\nRUN pecl install igbinary \u0026\u0026 \\\n    pecl install -D 'enable-redis-igbinary=\"yes\"' redis \u0026\u0026 \\\n    docker-php-ext-enable igbinary redis\n```\n3. Выполните build.\n\n## Настройка memcached\n\nДля настройки memcached выполните следующие шаги:\n\n1. Добавьте сервис сервера memcached в docker-compose.yml\n```yml\n  memcached:\n    image: memcached\n    ports:\n      - \"11211:11211\"\n    container_name: memcached\n    networks:\n      - compose\n```\n2. В dockerfile вашего app сервиса (_docker/app/php-{PHP_VERSION}/Dockerfile) добавьте установку php модуля memcached или memcache и нескольких пакетов\n```dockerfile\n# эти пакеты нужны, если вы используете php модуль memcached\nRUN apt-get update \u0026\u0026 apt-get install -y \\\n    libmemcached-dev \\\n    zlib1g-dev\n# используйте один из php модулей для работы с сервером memcached\nRUN pecl install memcache \u0026\u0026 docker-php-ext-enable memcache\nRUN pecl install memcached \u0026\u0026 docker-php-ext-enable memcached\n```\n3. Выполните build.\n\n## Переход с первой версии на вторую\n\nДля перехода выполните команду:\n\n```bash\ndocky upgrade\n```\n\nСкрипт попытается поменять docker-compose.yml под вторую версию и создаст файл .env.\n\nПосле выполнения рекомендуется проверить корректность изменения (файл docker-compose.yml, файл .env)","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbkychblu-6opwuk%2Fcompose","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbkychblu-6opwuk%2Fcompose","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbkychblu-6opwuk%2Fcompose/lists"}