В сети и на infostart.ru, в частности, много материалов по теории и примерам настройки сервера 1С в Docker окружении. Не буду цитировать экспертов и приводить ссылки, тем более что уже сложно понять какой материал в какой момент и откуда использовался. Если кто-то посчитает отдельные блоки «плагиатом», то прошу извинить и сообщить, обязательно вставлю ссылку. Сложно быть оригинальным, когда столько умных людей уже делились своими мыслями. В данной статье нет теории, нет ответов зачем это нужно и какие еще существуют варианты, а рассмотрена конкретная последовательность действий. Это статья родилась как желание закрепить опыт пошагового запуска для коллег и всех интересующихся.
Исходные данные:
Виртуальный сервер RAM 8Gb HDD 40Gb Linux CentOS 7 x64
Что ставим:
- Docker CE 20.10 (последний на момент написания статьи)
- Ubuntu 18.04 (Bionic)
- 1С - 8.3.17.1851 (лично проверял 8.3.13, 15, 17)
Какие контейнеры создаем:
- 1c-data – Сервер БД Postgres pro-1c (9.6 9.6) образ sibsau/postgres-pro-1c (см. https://hub.docker.com/r/sibsau/postgres-pro-1c)
- Host data.local
- Port 5432
- Администратор postgres/postgres
- 1c-server – Сервер 1С Предприятие 8.3.17.1851
- Host srv.local
- Port 1540, 1541, 1545, 1560-1591
- Простой веб-сервер для скачивания и загрузки дампов информационных баз
- SSH сервер (22 порт, root/q123Q123)
- VNC сервер (http://<адрес>:5900)
- JDK 11 для разворачивания агента КИП
- Отладка на сервере 1С по умолчанию разрешена
- 1c-web – Веб сервер 1С Предприятие 8.3.17.1851
- Host web.local
- Port 80
- по умолчанию прописана база «test»
- dashboard-app – Простое веб приложение для базового управления информационными базами на сервер
- Host dashboard.local
- Port 3000
- Portainer – Приложение для управления контейнерами
- Port 9000
Общий порядок шагов
1. Установка docker (см.https://docs.docker.com/engine/install/centos/)
(перепечатка с сайта) (возможна установка на Astra Linux, проверял на Орел, если потребуется дам информацию)
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker
systemctl enable docker
2. Копируем папку (scp / ftp / ....) из прикрепления в рабочую папку сервера, например в /home, и распаковываем архив
cd /home
tar -xf 1cserver.tar
3. Для базового управления контейнерами неплохой инструмент portainer (см. https://www.portainer.io/)
Будет запущен на порту 9000, можно после установки подключиться по адресу - http://<адрес сервера>:9000 для контроля последующих шагов.
cd /home
./portainer.sh
4. Копируем файлы установки 1с с сайта 1С в папку /home/dist
Много раз обсуждалось почему нельзя выкладывать дистрибутивы 1С, повторяться не буду. Нужно самостоятельно скачать с сайта 1С дистрибутивы платформы и клиента (см. https://releases.1c.ru/version_files?nick=Platform83&ver=8.3.17.1851)
- Будем считать, что скачали «Сервер 1С:Предприятия (64-bit) для DEB-based Linux-систем» - deb64_8_3_17_1851.tar.gz
- Будем считать, что скачали «Клиент 1С:Предприятия (64-bit) для DEB-based Linux-систем» - client_8_3_17_1851.deb64.tar
5. Распаковываем файлы установки и копируем в контейнеры
cd /home/dist
tar -xvf deb64_8_3_17_1851.tar.gz
tar -xvf client_8_3_17_1851.deb64.tar
cp -R ./ ./../1cserver-8.3.17/dist
cp -R ./ ./../1cserver-8.3.17-web/dist
6. Собираем образы контейнеров
cd /home
./build-images.sh
если все собралось, то в portainer должны появиться образы, примерно так:
7. Поднимаем контейнеры и запускаем
cd /home
./recreate-server.sh
./run.sh
если ошибок не возникло, то в portainer должны появиться запущенные контейнеры, примерно так:
Последующие шаги
1. Консоль администрирования 1С
К поднятому серверу можно подключиться через стандартную консоль управления серверами 1С. Кластер доступен по адресу сервера.
2. Приложение для базового управления
Можно подключиться к приложению управления по адресу http://<адрес сервера>:3000
- Упрощенное создание, удаление, импорт и экспорт информационных баз
- Открытие VNC консоли
3. VNC консоль
Можно подключиться к VNC консоли http://<адрес сервера>:6080/
Использование VNC целесообразно в отладочных целях, т.к. часто «отваливается», помогает перезагрузка контейнера 1c-server. Причины «падения» понятны, но настроить автоматический перезапуск VNC-сервера, без перезагрузки контейнера пока не удалось.
4. Локальная станция
Для корректно работы нужно прописать адрес сервера на DNS-сервере предприятия или в локально дописать в файл \Windows\System32\drivers\etc
<адрес сервера> srv.local
После создания информационной базы к ней можно подключаться любым способом: конфигуратор, клиент толстый/тонкий/web.
Установка лицензий 1С штатная через Клиента или Конфигуратор. Возможно использовать внешний сервер лицензирования.
Дополнение:
Если требуется изменить версии, порты, адреса, пароли, явки и т.д. или получить более детальную информацию нужно смотреть (изменять) в файлах архива. Затем пересобирать образы и пересоздавать контейнеры. Можно без пересоздания контейнеров (в т.ч. в живую) смотреть, изменить ряд данных в контейнерах, например логи, скрипты и т.д. Примонтированные разделы лежат в папке /var/lib/docker/volumes.
Возможно какие-то вопросы не отражены, с удовольствием отвечу на вопросы.
Прошу экспертов сильно не ругаться, сделано для личного пользования и возможно не сильно оптимально. У нас практически все сервера переведены на контейнеры, по аналогичной технологии.
Внимание !!!
Еще раз напомню, все описанное в статье нужно делать в тестовой среде! Крайне не рекомендую переносить на рабочий контур без модификации, полного понимания рисков и последствий.
UPD: добавлена информация про запуск в Astra Linux (Орел)
Архив - docker_Astra_1c_8_3_20.rar
OS - Astra Linux 2.12
1c - 8.3.20.2039
DB - Postgres 9.6
Скачиваем с сайта 1с сервер и агент (при необходимости)
- server64_8_3_20_2039.tar.gz -> /1c.8.3.20/server/
- agentetp_1.0.34.51_all.deb -> /1c.8.3.20/agentetp/
В папке /1c.8.3.20 настраиваем под себя Dockerfile. В примере 3 секции - Агент ETP, Web-сервер, 1c-сервер. Если секция не нужна, то удаляем или комментируем.
Чуть подробней про файлы.
Папка /1c.8.3.20/server/:
- logcfg.xml - настройка логов 1С во внешнюю папку и настройка типов событий
- nethasp.ini - настройка если используется сервер лицензий
Папка /1c.8.3.20/http/:
- apache2.conf - конфигурация веб-сервера
- http-services.conf - публикация баз 1с, добавляем по аналогии свои по необходимости
- sites - папка для файлов публикации баз
Папка /1c.8.3.20/agentetp/:
- conf.cfg - настройка агента
- settings.xml - настройка агента
- python.tar - python для запуска скриптов
Папка /base-astra/:
- build-docker-image.sh - скрипт создания образа astra linux с официального сайта
Папка /:
- build-images.sh - скрипт создания образов docker
- docker-compose.yml - пример контейнеров, нужно изменить пути и т.д. под собственное окружение
Подготовка к запуску:
1. Распаковываем папку docker_Astra_1c_8_3_20.rar любым удобным способ на сервере, например /home/docker
2. Скачиваем файлы сервера и агента (при необходимости) с сайта 1с и копируем в /home/docker/1c.8.3.20/server/ и /home/docker/1c.8.3.20/agentetp/ (см.выше)
3. Проверяем пути и настройки в файлах (см.выше)
4. Запускаем сборку образов /home/docker/build-images.sh
5. Создаем папки для хранения данных, например в папке /mnt/data:
- /mnt/data/1c-data - файлы базы данных postgres
- /mnt/data/1c-server - файлы кластера
- /mnt/data/ibfilestore - файлы для хранилища файлов (если используются тома)
- /mnt/data/exchange - файлы для файлового обмена (если есть обмены между базами)
- /mnt/data/backup - папка для сохранений (например сохранения делаются через Агента ETP)
- /mnt/data/1c-log - папка с логами 1с
6. Запускаем контейнеры из папки /home/docker/ -> docker-compose up -d
7. Создание баз через консоль управления серверами (1CV8 Servers (x86-64).msc), (сервер БД - 1c-data, пользователь и пароль postgres)
8. Для подключения клиентов вносим имя хоста контейнера (srv0504.server - в примере из docker-compose.yml) в C:\Windows\System32\drivers\etc\hosts или в dns-сервер.
В целом все, если что-то не указал, напишите..