Files

113 lines
7.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 1С:Предприятие — веб-публикация для DFWebOS
Контейнер с Apache 2.4 и модулем веб-сервера 1С:Предприятие 8.3, публикующий информационную базу 1С по пути `/BuhBase`.
> Это веб-фронтенд. Сам **сервер 1С:Предприятие** должен быть запущен отдельно (на той же машине или в локальной сети) — приложение лишь публикует информационную базу через Apache.
Адаптация репозитория [petrmyazin/docker-apache-1c-example](https://github.com/petrmyazin/docker-apache-1c-example) под фреймворк приложений DFWebOS.
## Структура каталога
```
web-1c/
├── dfwebos-app.yml # манифест приложения для DFWebOS
├── docker-compose.yml # ссылается на готовый локальный образ
├── README.md # этот файл
├── docker/ # build-контекст образа Apache + модуль 1С
│ ├── Dockerfile
│ ├── httpd.conf # преднастроенный конфиг Apache + публикация /BuhBase
│ ├── default.vrd # дефолт, запекается в образ; в рантайме перекрывается томом
│ ├── build-image.sh # скрипт локальной сборки образа
│ ├── .gitignore # исключает deb64.tar.gz из git
│ └── deb64.tar.gz # ⚠️ положить вручную, см. ниже
└── data/
└── vrd/
└── default.vrd # рабочие настройки подключения, монтируются в контейнер
```
## Почему образ собирается отдельно
Все остальные приложения DFWebOS используют готовые образы из публичных registry, и манифесты с директивой `build:` в `docker-compose.yml` **не показываются в магазине**. Поэтому образ для 1С нужно собрать **локально один раз** на той же машине, где работает DFWebOS, и docker-compose поднимает уже готовый образ из локального Docker daemon — без обращения к публичному registry.
Дополнительная причина — лицензионные ограничения: проприетарные deb-пакеты сервера 1С:Предприятие нельзя публиковать в публичных Docker-реестрах.
## Подготовка перед установкой
### 1. Скачать дистрибутив сервера 1С:Предприятие
1. Откройте [releases.1c.ru](https://releases.1c.ru).
2. Перейдите в раздел **Технологическая платформа 8.3 → Cервер 1С:Предприятия (64-bit) для DEB-based Linux-систем**.
3. Скачайте архив версии **8.3.23.1912** (или другой — см. примечание ниже).
4. Сохраните файл как:
```
web-1c/docker/deb64.tar.gz
```
> При смене версии платформы обновите путь к `wsap24.so` в [docker/httpd.conf](docker/httpd.conf) (строка `LoadModule _1cws_module /opt/1cv8/x86_64/<версия>/wsap24.so`), теги в [docker/build-image.sh](docker/build-image.sh) и [docker-compose.yml](docker-compose.yml), и поле `version` в [dfwebos-app.yml](dfwebos-app.yml).
### 2. Собрать образ локально
На той же машине, где работает DFWebOS:
```sh
cd web-1c/docker
./build-image.sh
```
Скрипт соберёт и зарегистрирует в локальном Docker daemon образ `dfwebos/apache-1c:8.3.23.1912`. Сборка занимает несколько минут и съедает ~1.5 ГБ места.
Проверить, что образ доступен:
```sh
docker images dfwebos/apache-1c
```
### 3. Настроить подключение к серверу 1С
Отредактируйте файл [data/vrd/default.vrd](data/vrd/default.vrd), указав:
- адрес вашего сервера 1С:Предприятие (`Srvr=`),
- имя информационной базы (`Ref=`).
Пример:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
base="/app-web-1c/BuhBase"
ib="Srvr=192.168.10.195;Ref=УПФ"
enableStandardOData="true">
<ws publishExtensionsByDefault="true"/>
<httpServices publishByDefault="true" publishExtensionsByDefault="true"/>
</point>
```
Файл смонтирован томом — изменения подхватываются перезапуском приложения, **без пересборки образа**.
Для DFWebOS с запуском через прокси `base` должен оставаться `/app-web-1c/BuhBase`: Apache внутри контейнера добавляет этот префикс перед передачей запроса 1С-handler'у, а браузер получает корректные абсолютные ссылки через `/app-web-1c/...`.
### 4. (Опционально) добавить DNS-имена сервера 1С
Если в `default.vrd` используется DNS-имя сервера 1С (а не IP), которое не разрешается из контейнера, раскомментируйте блок `extra_hosts:` в [docker-compose.yml](docker-compose.yml) и пропишите соответствие имени и IP-адреса.
## Установка в DFWebOS
После того как образ собран, а `data/vrd/default.vrd` настроен, приложение можно устанавливать стандартным способом DFWebOS — оно появится в магазине в категории **developer** под именем «1С:Предприятие (веб-публикация)».
После установки информационная база будет доступна по адресу:
```
http://<dfwebos-host>:8180/BuhBase/
```
## Несколько информационных баз
Чтобы опубликовать вторую базу:
1. Подготовьте отдельный `.vrd` (например, `another.vrd`) рядом с `default.vrd` в `data/vrd/`.
2. Добавьте в [docker/Dockerfile](docker/Dockerfile) копирование своего `.vrd` в каталог `/usr/local/apache2/htdocs/<AnotherBase>/`.
3. Раскомментируйте и адаптируйте блок второй базы в [docker/httpd.conf](docker/httpd.conf) (см. конец файла).
4. Смонтируйте новый `.vrd` томом в [docker-compose.yml](docker-compose.yml).
5. Пересоберите образ (`./build-image.sh`) и переустановите приложение в DFWebOS.