Полный пример запуска 1С в докере (Linux)

17.10.22

Разработка - DevOps и автоматизация разработки

Описание примера запуска сервера 1С в докере на CentOS 7. Содержит архив со скриптами и последовательность шагов для запуска тестового сервера (Сервер, Клиент, Web и простой консоли управления информационными базами).

Скачать файлы

Наименование Файл Версия Размер
Скрипты запуска 1С в докере (Linux)
.tar 69,50Kb
60
.tar 69,50Kb 60 Скачать
Скрипты запуска 1С в докере (Astra Linux)
.rar 26,22Mb
9
.rar 26,22Mb 9 Скачать

В сети и на 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)

Какие контейнеры создаем:

 
 Характеристики
  • 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-сервер.

 

В целом все, если что-то не указал, напишите..

Docker Докер Astra Linux

См. также

Автотесты для типовых конфигураций ERP Управление предприятием 2 и Комплексная автоматизация 2 (для vanessa automation)

Тестирование QA DevOps и автоматизация разработки Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Налоговый учет Платные (руб)

Готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарии возможно использовать как для vanessa-automation, так и для СППР. Поддерживаемые версии конфигураций ERP2 и КА2: 2.5.15.111.

2220 руб.

04.07.2022    6722    26    0    

22

Системы контроля версий для 1С-разработчиков.

1С-программирование DevOps и автоматизация разработки Групповая разработка (Git, хранилище) DevOps для 1С Платформа 1С v8.3 Платные (руб)

Основы командной разработки на 1С. Использование систем контроля версий при разработке на платформе 1С:Предприятие 8

4900 руб.

29.06.2022    9142    78    4    

110

Автотесты для типовых конфигураций Бухгалтерия предприятия КОРП 3.0 и Бухгалтерия предприятия 3.0 (vanessa automation)

Тестирование QA DevOps и автоматизация разработки Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Платные (руб)

Готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарий – feature-файл, разработанный с помощью vanessa-automation. Запуск сценария выполняется интерактивно с помощью vanessa-automation или с помощью vanessa-runner в CI-системах. Доступно тестирование тонкого клиента. Поддерживаемые версии конфигураций 1С:Бухгалтерия предприятие 3.0 и версии КОРП: 3.0.144.49.

1728 руб.

20.01.2022    6586    10    0    

9

Автоматическое подтверждение легальности обновления базы или как обновить 100 типовых баз 1С за 5 часов

DevOps и автоматизация разработки Обновление 1С Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Расширение для конфигураций 1С для автоматического подтверждения легальности обновления и выполнения обработчиков обновления при пакетном автоматическом обновлении большого числа баз 1С. А также сам модуль обработки по автоматическому обновлению баз.

2 стартмани

08.05.2019    24213    54    VPanin56    26    

26

1С, СППР и Архитектура как код

DevOps и автоматизация разработки Бесплатно (free)

Можно ли идеи подхода «Архитектура как код» положить на 1С или иную платформу, чтобы не изобретать ещё какой-то язык и сразу получить множество готовых библиотек функций и инструмент достижения главной цели подхода AaC.

01.02.2024    2461    roman72    9    

7

TCP прокси-сервер хранилища конфигурации 1С

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Платформа 1С v8.3 Бесплатно (free)

Продолжение истории с прокси хранилища, но уже не на HTTP, а на TCP и без падений по памяти веб-сервера. Проверяем комментарии хранилища, вызываем веб-хуки, старты пайплайнов, gitsync по событию помещения версии в хранилище. И все это полностью на знакомом и понятном OneScript.

17.01.2024    2772    kamisov    17    

57

Infrastructure as code: кнопка «Сделать всё», или Упаковываем наше окружение в 5 кБ текста

DevOps и автоматизация разработки Бесплатно (free)

Когда под каждый проект нужно развернуть отдельный стенд разработки и сборочную линию для его обслуживания, велик риск влияния человеческого фактора. О том, как зафиксировать инженерный опыт в скриптах и унифицировать необходимые настройки для автоматизированного разворачивания инфраструктуры с помощью Terraform и Ansible, пойдет речь в статье.

01.11.2023    1325    Libelle    5    

13

Обработка для подготовки файла настройки дымовых тестов измененных объектов конфигурации

DevOps и автоматизация разработки Тестирование QA Россия Абонемент ($m)

В статье приведен пример обработки, которая на основании измененных файлов git-репозитория готовит специальный файл настройки xUnitParams.json для последующего выполнения дымовых тестов (xUnitFor1C/add) только для измененных объектов конфигурации

1 стартмани

09.10.2023    706    4    ICL-Soft    0    

3
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Andry.Boris 59 27.01.21 00:16 Сейчас в теме
Спасибо, статья интересная.
Похоже на записки кулинара и книги рецептов.

Но не раскрыта роль начальных данных.

Исходные данные:
Виртуальный сервер RAM 8Gb HDD 40Gb Linux CentOS 7 x64
Что ставим:
Ubuntu 18.04 (Bionic)

Что к чему и для чего CentOS и Ubuntu?

Я навичок в этой теме. Просьба не ругать за офтопик.
2. user1543979 11.02.21 19:55 Сейчас в теме
(1)на убунте - доекер
на центосе - 1с
3. user1543979 11.02.21 20:03 Сейчас в теме
хотя стоп.
автор говорит про убунту , а выполняет команды "yum"

всё ок?
4. portwein 23.08.21 11:53 Сейчас в теме
(3) Ubuntu разворачивается в контейнере. Контейнер крутится в докере, докер установлен на Centos - поэтому yum!
5. пользователь 08.12.21 16:19
Сообщение было скрыто модератором.
...
6. None546674 06.06.22 16:44 Сейчас в теме
Есть у кого в продакшене это решение?
Хотел бы проконсультироваться
7. uasy_user611066 39 06.06.22 17:16 Сейчас в теме
(6) У нас работает, пишите, постараюсь помочь если получится.
8. None546674 07.06.22 12:50 Сейчас в теме
(7) Вообще интересует 3 вопроса
1) БД у вас в контейнере? Если да, то что по производительности? Не сталкивались с критичными багами?
2) Как организовано лицензирование? Это отдельный сервер лицензирования?
3) В целом сталкивались с каким-либо трудностями в начале и процессе эксплуатации?
9. uasy_user611066 39 07.06.22 13:51 Сейчас в теме
(8) 1. Производительность сильно зависит от железа, лучше всего перед промом провести нагрузочное тестирование или хотя-бы замеры по Гилеву. На тестовых серверах в офисе падение производительности составляло примерно на 10-15%. На сколько это критично, нужно оценивать индивидуально. Если критично, то СУБД можно вынести за контур докера или даже на другую машину.
2. Лицензии серверные программные, установлены стандартным образом в папку внутри контейнера. Клиентские, есть где-то аппаратные на отдельных машинах (виртуальных), есть где-то так-же программные на сервере лежат.
3. Проблемы были с соединением клиентов через закрытую сеть, заказчик делал предположения что виноват docker, но так-как основная масса работала штатно, но гипотезу сняли и рекомендовали заказчику привести подключение к ЗСПД к одному стандарту, а не как у кого получилось. Также были проблемы при установке на закрытую Астру ("Смоленск") из-за мандатного доступа, не оказалось специалистов у заказчика по ее администрированию, а нам не давали доступ из-за соображений безопасности. Что-то еще серъезного особо не припомню..

Общее впечатление пока хорошо. Самое главное не связаны руки со стороны "живой" системы, нужен минимальный доступ для администрирования контейнеров и нет необходимости разбираться с зависимостями разных библиотек. Сейчас внутри контейнера с 1С используется Ubuntu 18, готовим образ для перехода Астру. Из-за того что данные кластера и БД хранятся "снаружи" контейнеров, очень легко сохранять, переносить, пересоздавать и т.д. Также удобно масштабировать (создание контейнеров на другой машине или этой-же но с другим составом портов и включением в кластер). Неизбежна потеря производительности, но нужно искать компромиссы..
10. user1811975 09.07.22 15:28 Сейчас в теме
11. uasy_user611066 39 25.07.22 08:52 Сейчас в теме
(10) Внутри присоединенного архива...
13. пользователь 26.07.22 23:23
Сообщение было скрыто модератором.
...
12. пользователь 26.07.22 23:21
Сообщение было скрыто модератором.
...
14. user1860333 17.10.22 11:45 Сейчас в теме
Здравствуйте , нужна информация по установке на Асра линукс Докера ,как можено ее получить? Заранее благодарю
15. uasy_user611066 39 17.10.22 14:00 Сейчас в теме
(14)
Добрый день. Добавил информацию о запуске и файл архива со скриптами.
16. user1905092 06.02.23 11:30 Сейчас в теме
У www.portainer.io/ весьма не гуманные расценки

по конфигам не плохо бы завернуть все в nginx, чтобы не светить внутренней сетью контейнера наружу
ну и в SSL обернуть
Оставьте свое сообщение