beeralex / compose
docker-compose for bitrix
Installs: 29
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 1
Language:Shell
This package is auto-updated.
Last update: 2024-11-19 07:57:41 UTC
README
Настроенная обертка над docker-compose для локальных проектов bitrix
nginx + php (7.4, 8.2) + mysql (5.7, 8.0) + node 20 версии
Установка:
composer require beeralex/compose:dev-main
Установка docker-compose.yml
Команды выполнять в директории где находится composer.json!!!
Для установки docker-compose.yml выполнить команду
./vendor/bin/compose install
Или можно создать алиас
alias compose='sh $([ -f compose ] && echo compose || echo vendor/bin/compose)'
Тогда команда install будет выполняться слудующим образом:
compose install
Шаги установки:
- Путь до директории сайта указывается относительно текущей директории (./). Можно оставить пустым и вмонтироваться в контейнеры будет все из текущей директории. Лучше выносить за сайт и указывать например - site, а в директории site уже разворачивать сайт.
- Выбрать версию php - 7.4 или 8.2
- Выбрать версию mysql - 5.7 или 8.0
- Устанавливать ли node.js - Y или N, если установите Y, то будет создан сервис с node js 20 версии
- Если будет устанавливаться node.js, то нужно указать корневую директорию для него, то есть директория содержащая файл package.json. Путь указывается относительно корня сайта - local/js/vite или пустое поле если package.json в корне сайта.
- Устанавливать ли sphinx - Y или N, если установите Y, то будет создан сервис с shphinx версии 2.2.11
После этого в директории где выполнялась команда появиться docker-compose.yml файл с настроенными сервисами.
Публикация докерфайлов и файлов конфигурации
Если вам необходимо внести изменения в докерфайлы или файлы конфигурации, или добавить что то свое, то используйте команду:
compose publish
Эта команда перенесет всю конфигурацию в текущую директорию и изменит пути до файлов в docker-compose.yml, т.к. теперь все будет браться из ./_docker
SSL сертификаты для nginx
Сертификаты и ключ копируются в контейнер из /_docker/nginx/certs/ и запись о них уже добавлена в nginx.conf.
Сейчас там используются временные самописные сертификаты которые будут действительны до ~2051 года.
Сервер одинаково настроен на работу как по http, так и по https.
Более подробно - https://github.com/BkycHblu-6oPwuK/compose/tree/main/src/_docker/nginx
nginx в php контейнере
Для работы с сокетами в php кентейнер был установлен nginx который проксирует запросы на контейнер nginx.
nginx.conf для контейнера php лежит в _docker/app/nginx.conf
Настройка cron
По умолчанию установка cron выключена. Для включания опубликуйте докерфайлы и файлы конфигурации если еще этого не делали
compose publish
Перейдите в "_docker/app/php-{your-version}/Dockerfile" и раскомментируйте строки начинающиеся с - "#cron"
Запись заданий осуществляйте в:
_docker/app/cron/appuser.txt
- для пользователя сайта_docker/app/cron/root.txt
- для root
выполните команду
compose build
и запустите контейнеры, cron должен начать работать
Туннелирование локального сайта
Для туннелирования используется Expose (https://github.com/beyondcode/expose) и для того чтобы поделить вашим локальным сайтом выполните команду:
compose share
Сайт будет доступен 1 час, после этого команду можно выполнить заново.
доступные флаги expose для проброса через команду compose share:
--auth
--server
--subdomain
--domain
--server-host
--server-port
Документация expose - https://expose.dev/docs/introduction
Sphinx (поисковая система)
sphinx (версия 2.2.11) является сервисом в docker-compose.yml (добавляется при установке) и собирается на основе Dockerfile из _docker/sphinx/Dockerfile, где так же лежит и файл конфигурации sphinx.conf.
После запуска контейнеров можно подключаться к sphinx:
sphinx:9306 - протокол MySql
sphinx:9312 - стандартный протокой
Пакет pm2 в node контейнере
В dockerfile node устанавливается пакет pm2, для работы с ним используйте команду
compose pm2 {arg}
Запустить сервер node js можно:
- командой pm2 -
compose pm2 start server.js
- настроить на запуск при запуске контейнеров - для этого нужно раскомментировать строчку
command
в docker-compose.yml в секции с сервисом node, при этом command строчкой выше можно удалить. Так же в этой команде проверьте путь до файла с сервером
SSH ключи
ssh ключи пробрасываются с помощью 'secrets' и вам достаточно расскомментировать соответствующие строки (начинающиеся с "#ssh") в следующих файлах:
docker-compose.yml
_docker/app/php-{your-version}/Dockerfile
xdebug
для работы xdebug раскомментируйте строки начинающиеся с "#xdebug", в следующих файлах:
docker-compose.yml
_docker/app/php-{your-version}/Dockerfile
Описание всех доступных команд
install
- Создание docker-compose.yml в текущей директории
compose install
publish
- Публикация файлов конфигурации в текущей директории
compose publish
share
- Позволяет сделать сайт доступным из интернета
compose share
php
- Выполнение команды php в контейнере с php
compose php -v
composer
- Выполнение команды composer в контейнере с php
compose composer install
npm
- Выполнение команды npm в контейнере с node js если он был установлен
compose npm install
pm2
- Выполнение команды pm2 в контейнере с node js если он был установлен. Команда принимает такие же аргументы как и оригинальная pm2
compose pm2 {arg}
И все дефолтные команды docker-compose
- Выполнение любой команды docker-compose
compose up -d compose down compose build
Пользователи в контейнерах
appuser
- в контейнере с php (service app)nodeuser
- в контейнере с node js (service node)
Возможные проблемы
bash: compose: Permission denied
- выполнить команду
chmod +x ./vendor/beeralex/compose/src/bin/compose
compose: not found или compose: /bin/bash^M: bad interpreter
- выполнить команду
sed -i 's/\r$//' ./vendor/beeralex/compose/src/bin/compose