Использование виртуальной машины «Битрикс» в Docker позволяет решить одну проблему. Bitrix изначально заточен исключительно под CentOS, однако компании и отдельные разработчики используют в своих решениях абсолютно разные ОС на основе Linux, в том числе и Ubuntu. Поэтому перенос виртуальной машины на Docker для многих становится насущной необходимостью. К счастью, описанная ниже инструкция подойдет для любой из Линукс-подобных систем: главное, чтобы у вас уже была настроенная виртуальная машина.
Для сборки виртуальной машины нам понадобятся Nginx, PHP-FPM и MySQL, желательно последних версий. Директория, в которой расположено ядро Bitrix, корневая и потому должна быть расположена в каталоге с аналогичным именем. Идентификаторы UID и GID пользователя для Nginx и PHP-FPM должны быть 101:101. О том, как это проверить и исправить, если идентификаторы другие, смотрите ниже.
Дальнейший процесс мы решили для вашего удобства разбить на несколько простых этапов, сделав пошаговую инструкцию. Итак, проверьте, выполнены ли требования к каждому приложению.
Nginx должен быть установлен по пути /var/www/bitrix в контейнере. Взаимодействие с контейнером организуется через envsubst, а также используются переменные окружения. Конфиг. файл главного сайта также должен быть упакован в контейнер и располагаться по пути /var/www/bitrix/conf. Там же должны находиться шаблоны dbconn и settings.
Для запуска образа Nginx в Docker сначала откроем нужный порт следующей инструкцией:
Далее осталось ввести IP вашего сервера в браузере, и, если всё сделано правильно, вы увидите надпись крупным шрифтом: Welcome to nginx! с комментарием, что приложение успешно установлено и работает.
Используйте аналогичный путь установки: /var/www/bitrix. Конфиг. файл conf/override.ini должен содержать настройки сервера. Также используйте дополнительные расширения (gd, mysqli, opcache, xml, zip и ldap), которые обеспечат запуск «Битрикса».
UID и GID пользователя для MySQL должны быть 1001:1001. Директорию data с информацией по базе данных нужно поместить на хост и назначить аналогичные UID и GID. Для проверки занятых UID и GID используем инструкцию id, а затем с проверкой по конкретному пользователю (в нашем случае id timeweb, но у вас, естественно, имя пользователя будет другим
Если у нужного нам пользователя UID и GID другие, назначаем ему правильные. Но перед этим рекомендуется сделать бэкапы файлов с информацией об UID и GID. Они находятся в директориях /etc/passwd и /etc/group. Теперь меняем все идентификаторы (в том числе и группы) следующими инструкциями:
И проверяем, всё ли в порядке, уже знакомой нам командой:
Далее стандартный конфиг. файл z_bx_custom.cnf расположите в директории config/. Дамп базы данных поместите в директорию docker-entrypoint-initdb.d. В этом случае после первого запуска произойдет корректный импорт файлов sql.gz. В шаблоне init.sql.template, расположенном в той же директории, есть скрипт SQL, выполняющий замены на основе доменного имени ресурса. База данных создается также при первом запуске, причем вместе с парой логин-пароль для доступа, которая берется из файла .env, расположенного в корневом каталоге ls -la (о том, какие значения нужно изменить в этом файле, речь пойдет ниже).
Чтобы во время работы не возникало проблем с изменением файлов, нужно установить атрибут SGID на директорию с кодом. Это делает следующая инструкция (подставьте имя своей директории вместо your_code_directory) :
Также рекомендуем ознакомиться с Для просмотра ссылки Войдиили Зарегистрируйся от разработчиков продукта «1C-Битрикс: Виртуальная машина». Однако учтите, что если вы будете использовать иное окружение, подключая какие-то другие сервисы, то специалисты службы поддержки Bitrix не всегда смогут помочь вам. Дело в том, что Docker не является официально поддерживаемым инструментом «1C-Битрикс: Виртуальная машина». А мы приступаем к установке.
Размещаем в корневой директории bitrix/ основной каталог. Если дамп базы данных достаточно велик, его можно предварительно сжать через декомпрессор. Теперь создаем скрипт инициализации и выполняем его однократно, используя следующие настройки.
Делаем init.sh исполняемым, сам файл находится в каталоге /system/etc/init.sh:
Готовим директории MySQL и SQL, эта и следующие инструкции выполняются через sudo:
Устанавливаем пользователя:
Устанавливаем права – подождите несколько минут:
Очищаем кеш:
Будем делать это через встроенный инструмент Docker-Compose, позволяющий работать со сложными контейнерами. Сборку образов нетрудно сделать при помощи такой инструкции:
Файл будет выглядеть примерно так (подставьте ваши значения вместо нулей, подберите безопасные пароли и укажите нужные пути в вашей системе) :
Задаем переменную окружения в .env для домена, доступного на хост-машине по IP 127.0.0.1, и меняем регистрационные данные пользователя, если это требуется. Здесь же можно добавить и ключ API. Используйте следующие переменные и укажите свои значения:
Изменяем файл docker-compose.yaml в PHP-FPM, выставляя локальный IP в пункте extra_hosts. И теперь запускаем Docker инструкцией:
Всё готово, осталось только зайти на сайт и приступить к работе. По умолчанию адрес ресурса будет Для просмотра ссылки Войдиили Зарегистрируйся.
Перенос виртуальной машины «Битрикс» в Docker позволяет разработчикам не привязываться к инфраструктуре клиента, а также обеспечивает единые конфигурационные параметры окружения. Это избавляет специалистов от постоянной перенастройки окружения в процессе разработки.
Осталось добавить, что представленная выше реализация работы «1C-Битрикс: Виртуальная машина» в Docker, разумеется, не является единственно возможной. Однако она наиболее простая. Но желающие могут найти и другие варианты. Например, на GitHub доступны:
Источник: Для просмотра ссылки Войдиили Зарегистрируйся
Перенос виртуальной машины «Битрикс» в Docker
Для сборки виртуальной машины нам понадобятся Nginx, PHP-FPM и MySQL, желательно последних версий. Директория, в которой расположено ядро Bitrix, корневая и потому должна быть расположена в каталоге с аналогичным именем. Идентификаторы UID и GID пользователя для Nginx и PHP-FPM должны быть 101:101. О том, как это проверить и исправить, если идентификаторы другие, смотрите ниже.
Дальнейший процесс мы решили для вашего удобства разбить на несколько простых этапов, сделав пошаговую инструкцию. Итак, проверьте, выполнены ли требования к каждому приложению.
Шаг 1. Настраиваем Nginx
Nginx должен быть установлен по пути /var/www/bitrix в контейнере. Взаимодействие с контейнером организуется через envsubst, а также используются переменные окружения. Конфиг. файл главного сайта также должен быть упакован в контейнер и располагаться по пути /var/www/bitrix/conf. Там же должны находиться шаблоны dbconn и settings.
Для запуска образа Nginx в Docker сначала откроем нужный порт следующей инструкцией:
docker run -p 101:101 nginx
Далее осталось ввести IP вашего сервера в браузере, и, если всё сделано правильно, вы увидите надпись крупным шрифтом: Welcome to nginx! с комментарием, что приложение успешно установлено и работает.
Шаг 2. Настраиваем PHP-FPM
Используйте аналогичный путь установки: /var/www/bitrix. Конфиг. файл conf/override.ini должен содержать настройки сервера. Также используйте дополнительные расширения (gd, mysqli, opcache, xml, zip и ldap), которые обеспечат запуск «Битрикса».
Шаг 3. Настраиваем MySQL
UID и GID пользователя для MySQL должны быть 1001:1001. Директорию data с информацией по базе данных нужно поместить на хост и назначить аналогичные UID и GID. Для проверки занятых UID и GID используем инструкцию id, а затем с проверкой по конкретному пользователю (в нашем случае id timeweb, но у вас, естественно, имя пользователя будет другим
Код:
timeweb@timeweb:~$ id
uid=1000(timeweb) gid=100(timeweb) groups=1000(timeweb), 4(adm),...
timeweb@timeweb:~$ id timeweb
uid=1000(timeweb) gid=100(timeweb) groups=1000(timeweb), 4(adm),...
Если у нужного нам пользователя UID и GID другие, назначаем ему правильные. Но перед этим рекомендуется сделать бэкапы файлов с информацией об UID и GID. Они находятся в директориях /etc/passwd и /etc/group. Теперь меняем все идентификаторы (в том числе и группы) следующими инструкциями:
timeweb@timeweb:~$ groupmod -g 1001 timeweb
timeweb@timeweb:~$ usermod -u 1001 -g 1001 timeweb
И проверяем, всё ли в порядке, уже знакомой нам командой:
Код:
timeweb@timeweb:~$ id timeweb
uid=1001(timeweb) gid=1001(timeweb) groups=1001(timeweb)
Шаг 4. Завершаем подготовку
Далее стандартный конфиг. файл z_bx_custom.cnf расположите в директории config/. Дамп базы данных поместите в директорию docker-entrypoint-initdb.d. В этом случае после первого запуска произойдет корректный импорт файлов sql.gz. В шаблоне init.sql.template, расположенном в той же директории, есть скрипт SQL, выполняющий замены на основе доменного имени ресурса. База данных создается также при первом запуске, причем вместе с парой логин-пароль для доступа, которая берется из файла .env, расположенного в корневом каталоге ls -la (о том, какие значения нужно изменить в этом файле, речь пойдет ниже).
Чтобы во время работы не возникало проблем с изменением файлов, нужно установить атрибут SGID на директорию с кодом. Это делает следующая инструкция (подставьте имя своей директории вместо your_code_directory) :
timeweb@timeweb:~$ chmod u+s your_code_directory
Также рекомендуем ознакомиться с Для просмотра ссылки Войди
Шаг 5. Приступаем к установке виртуальной машины Bitrix в Docker
Размещаем в корневой директории bitrix/ основной каталог. Если дамп базы данных достаточно велик, его можно предварительно сжать через декомпрессор. Теперь создаем скрипт инициализации и выполняем его однократно, используя следующие настройки.
Делаем init.sh исполняемым, сам файл находится в каталоге /system/etc/init.sh:
chmod +x init.sh
Готовим директории MySQL и SQL, эта и следующие инструкции выполняются через sudo:
./init.sh db
Устанавливаем пользователя:
./init.sh owner $bitrix
Устанавливаем права – подождите несколько минут:
./init.sh perm
Очищаем кеш:
./init.sh clear-cache
Шаг 6. Собираем образы
Будем делать это через встроенный инструмент Docker-Compose, позволяющий работать со сложными контейнерами. Сборку образов нетрудно сделать при помощи такой инструкции:
docker-compose -f docker-compose.build.yaml build
Файл будет выглядеть примерно так (подставьте ваши значения вместо нулей, подберите безопасные пароли и укажите нужные пути в вашей системе) :
Код:
services:
db:
image: mysql:0.0
volumes:
- db_data:C:\...\dcompose
environment:
MYSQL_ROOT_PASSWORD: rootbitrix
MYSQL_DATABASE: bitrix
MYSQL_USER: bitrix
MYSQL_PASSWORD: bitrix
bitrix:
depends_on:
- db
image: bitrix:00.0.0
ports:
- 0000:0000
extra_hosts:
000.000.0.0
environment:
BITRIX_DB_HOST: db:0000
BITRIX_DB_USER: bitrix
BITRIX_DB_PASSWORD: bitrix
Шаг 7. Настраиваем файл окружения
Задаем переменную окружения в .env для домена, доступного на хост-машине по IP 127.0.0.1, и меняем регистрационные данные пользователя, если это требуется. Здесь же можно добавить и ключ API. Используйте следующие переменные и укажите свои значения:
Код:
ENVIRONMENT=bitrix
USERNAME=bitrix
PASSWORD=bitrix
API_KEY=xxxx
Шаг 8. Завершаем установку
Изменяем файл docker-compose.yaml в PHP-FPM, выставляя локальный IP в пункте extra_hosts. И теперь запускаем Docker инструкцией:
docker-compose up -d
Всё готово, осталось только зайти на сайт и приступить к работе. По умолчанию адрес ресурса будет Для просмотра ссылки Войди
Заключение
Перенос виртуальной машины «Битрикс» в Docker позволяет разработчикам не привязываться к инфраструктуре клиента, а также обеспечивает единые конфигурационные параметры окружения. Это избавляет специалистов от постоянной перенастройки окружения в процессе разработки.
Осталось добавить, что представленная выше реализация работы «1C-Битрикс: Виртуальная машина» в Docker, разумеется, не является единственно возможной. Однако она наиболее простая. Но желающие могут найти и другие варианты. Например, на GitHub доступны:
- Для просмотра ссылки Войди
или Зарегистрируйся, которое подойдет для демо Битрикса; - еще одно Для просмотра ссылки Войди
или Зарегистрируйся, представляющее собой Bitrix infrastructure as a code (BIaaC).
Источник: Для просмотра ссылки Войди