Help:XSvacer:Webide:SvacerAsDockerContainer: Difference between revisions

From Svacer Wiki
mNo edit summary
m (minor style fixes)
 
Line 1: Line 1:
= Поддержка функциональности [https://svacer.ispras.ru/mediawiki/index.php?title=Help:XSvacer:Webide webide] когда Svacer развёрнут в docker-контейнере =
= Поддержка функциональности [[Help:XSvacer:Webide|webide]], когда Svacer развёрнут в docker-контейнере =


На данный момент функциональность запуска Theia IDE по умолчанию настроена на запуск Svacer с помощью исполняемого файла, "рядом" с docker'ом.
На данный момент функциональность запуска Theia IDE по умолчанию настроена на запуск Svacer с помощью исполняемого файла, "рядом" с docker'ом.


Для поддержки функциональности <code>webide</code> когда Svacer развёрнут в docker-контейнере необходимо решить следующие задачи:
Для поддержки функциональности webide, когда Svacer развёрнут в docker-контейнере, необходимо решить следующие задачи:


# Предоставить docker-контейнеру Svacer доступ к управлению контейнерами IDE;
# Предоставить docker-контейнеру Svacer доступ к управлению контейнерами IDE;
# Активация функциональности <code style="white-space: pre;">webide</code> в docker-контейнере Svacer;
# Активация функциональности webide в docker-контейнере Svacer;
# Организация сетевого доступа между контейнером Svacer и контейнерами IDE;
# Организация сетевого доступа между контейнером Svacer и контейнерами IDE;
# Настройка доступа к общему хранилищу с исходными файлами для контейнера Svacer и контейнеров IDE;
# Настройка доступа к общему хранилищу с исходными файлами для контейнера Svacer и контейнеров IDE;
Line 22: Line 22:
Один из способов подключения к API docker'а является использование socket-файла <code>/var/run/docker.sock</code>. Чтобы Svacer получил доступ к этому файлу, его необходимо примонтировать к docker-контейнеру:
Один из способов подключения к API docker'а является использование socket-файла <code>/var/run/docker.sock</code>. Чтобы Svacer получил доступ к этому файлу, его необходимо примонтировать к docker-контейнеру:


<pre style="font: 1em Courier New, monospace;">
<pre>
services:
services:
   ...
   ...
Line 33: Line 33:
</pre>
</pre>


== Изменение настроек Svacer - <code>svacer.cfg</code> ==
== Изменение настроек Svacer (svacer.cfg) ==


Дальнейшие шаги связаны с изменением настроек Svacer. В случае, когда Svacer развёрнут в docker-контейнере, это можно сделать следующим образом:
Дальнейшие шаги связаны с изменением настроек Svacer. В случае, когда Svacer развёрнут в docker-контейнере, это можно сделать следующим образом:
# Создать конфигурационный файл <code>svacer.cfg</code>;
# Создать конфигурационный файл <code>svacer.cfg</code>;
# Перенести настройки функциональности <code>webide</code>;
# Перенести настройки функциональности webide;
# Примонтировать файл к рабочей директории docker-контейнера Svacer;
# Примонтировать файл к рабочей директории docker-контейнера Svacer;
# Перезапустить контейнер Svacer;
# Перезапустить контейнер Svacer;
Line 43: Line 43:
Чтобы примонтировать <code>svacer.cfg</code> к контейнеру Svacer нужно в файл <code>docker-compose.yml</code> добавить строку:
Чтобы примонтировать <code>svacer.cfg</code> к контейнеру Svacer нужно в файл <code>docker-compose.yml</code> добавить строку:


<pre style="font: 1em Courier New, monospace;">
<pre>
services:
services:
   ...
   ...
Line 54: Line 54:
</pre>
</pre>


=== Перенос настроек функциональности <code>webide</code> в <code>svacer.cfg</code> ===
=== Перенос настроек функциональности webide в <code>svacer.cfg</code> ===


Скопировать секцию с [https://svacer.ispras.ru/mediawiki/index.php?title=Help:XSvacer:Webide#.D0.9A.D0.BE.D0.BD.D1.84.D0.B8.D0.B3.D1.83.D1.80.D0.B0.D1.86.D0.B8.D1.8F_.D0.BF.D0.BE_.D1.83.D0.BC.D0.BE.D0.BB.D1.87.D0.B0.D0.BD.D0.B8.D1.8E настройками по умолчанию] в <code>svacer.cfg</code>
Скопировать секцию с [[Help:XSvacer:Webide#Конфигурация_по_умолчанию|настройками по умолчанию]] в <code>svacer.cfg</code>


== Активация функциональности <code>webide</code> ==
== Активация функциональности webide ==


Варианты активации функциональности <code>webide</code>:
Варианты активации функциональности webide:
# указать флаг <code>--xsvacer.features webide</code> при запуске Svacer;
* Указать флаг <code>--xsvacer.features webide</code> при запуске Svacer;
# в конфигурационном файле (<code>svacer.cfg</code>) добавить значение <code>webide</code> в список <code>/xsvacer/features</code>;
* В конфигурационном файле <code>svacer.cfg</code> добавить значение <code>webide</code> в список <code>/xsvacer/features</code>;


=== Решение ===
=== Решение ===
Line 68: Line 68:
Второй вариант активации функциональности является более предпочтительным. В <code>svacer.cfg</code> необходимо добавить следующую настройку:
Второй вариант активации функциональности является более предпочтительным. В <code>svacer.cfg</code> необходимо добавить следующую настройку:


<pre style="font: 1em Courier New, monospace;">
<pre>
xsvacer:
xsvacer:
   features:
   features:
Line 80: Line 80:
В [https://svacer.ispras.ru/extra/docker-compose.yml docker-compose.yml] используется docker-образ Svacer, собранный на основе [[Dockerfile]]. В данном файле содержится инструкция запуска Svacer
В [https://svacer.ispras.ru/extra/docker-compose.yml docker-compose.yml] используется docker-образ Svacer, собранный на основе [[Dockerfile]]. В данном файле содержится инструкция запуска Svacer


<pre style="font: 1em Courier New, monospace;">
<pre>
CMD /svacer/bin/svacer-server --memsettings=${MEMSETTINGS} run --store $STORE --pg $SVACER_PG_URL
CMD /svacer/bin/svacer-server --memsettings=${MEMSETTINGS} run --store $STORE --pg $SVACER_PG_URL
</pre>
</pre>
Line 86: Line 86:
Для активации функциональности IDE необходимо переопределить аргументы инструкции <code style="white-space: pre;">CMD</code> в файле <code>docker-compose.yml</code>:
Для активации функциональности IDE необходимо переопределить аргументы инструкции <code style="white-space: pre;">CMD</code> в файле <code>docker-compose.yml</code>:


<pre style="font: 1em Courier New, monospace;">
<pre>
services:
services:
   ...
   ...
Line 99: Line 99:
== Организация сетевого доступа между контейнером Svacer и контейнерами IDE ==
== Организация сетевого доступа между контейнером Svacer и контейнерами IDE ==


В текущей реализации при запуске docker-контейнер IDE публикует внутренний порт web-приложения Theia IDE на случайный порт всех сетевых интерфейсов (0.0.0.0) docker-хоста. Svacer хранит информацию на каком порте хоста развёрнуты соответствующие инстансы IDE и проксирует запросы к ним.
В текущей реализации при запуске docker-контейнер IDE публикует внутренний порт web-приложения Theia IDE на случайный порт всех сетевых интерфейсов (0.0.0.0) docker-хоста. Svacer хранит информацию на каком порту хоста развёрнуты соответствующие инстансы IDE и проксирует запросы к ним.


Необходимо организовать доступ контейнера Svacer к портам docker-хоста, на которых опубликованы контейнеры IDE.
Необходимо организовать доступ контейнера Svacer к портам docker-хоста, на которых опубликованы контейнеры IDE.
Line 109: Line 109:
# Изменить настройку публикации портов контейнеров IDE на значение ip-адреса <code>docker0</code>.
# Изменить настройку публикации портов контейнеров IDE на значение ip-адреса <code>docker0</code>.


''' Определение ip-адреса <code>docker0</code>'''
'''Определение ip-адреса docker0'''


На docker-хосте выполнить команду <code>ip a</code>:
На docker-хосте выполнить команду <code>ip a</code>:


<pre style="font: 1em Courier New, monospace;">
<pre>
$ ip a
$ ip a
...
...
Line 122: Line 122:
</pre>
</pre>


В данном случае искомый ip-адрес - <code>172.17.0.1</code>
В данном случае искомый ip-адрес <code>172.17.0.1</code>


''' Изменение настроек публикации портов контейнеров IDE '''
''' Изменение настроек публикации портов контейнеров IDE '''


Настройки публикации порта контейнера IDE заданы в [https://svacer.ispras.ru/mediawiki/index.php?title=Help:XSvacer:Webide#.D0.9A.D0.BE.D0.BD.D1.84.D0.B8.D0.B3.D1.83.D1.80.D0.B0.D1.86.D0.B8.D1.8F_.D0.B7.D0.B0.D0.BF.D1.83.D1.81.D0.BA.D0.B0_Theia_IDE конфигурации запуска IDE]. Настройки по умолчанию должны быть предварительно [https://svacer.ispras.ru/mediawiki/index.php?title=Help:XSvacer:Webide:SvacerAsDockerContainer&action=submit#.D0.9F.D0.B5.D1.80.D0.B5.D0.BD.D0.BE.D1.81_.D0.BD.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B5.D0.BA_.D1.84.D1.83.D0.BD.D0.BA.D1.86.D0.B8.D0.BE.D0.BD.D0.B0.D0.BB.D1.8C.D0.BD.D0.BE.D1.81.D1.82.D0.B8_webide_.D0.B2_svacer.cfg перенесены в <code>svacer.cfg</code>].
Настройки публикации порта контейнера IDE заданы в [[Help:XSvacer:Webide#Конфигурация_запуска_Theia_IDE|конфигурации запуска IDE]]. Настройки по умолчанию должны быть предварительно [[Help:XSvacer:Webide:SvacerAsDockerContainer#Перенос_настроек_функциональности_webide_в_svacer.cfg|перенесены]] в svacer.cfg.


В файле <code>svacer.cfg</code> нужно добавить параметр <code>hostip</code> со значением ip-адреса интерфейса <code>docker0</code>:
В файле <code>svacer.cfg</code> нужно добавить параметр <code>hostip</code> со значением ip-адреса интерфейса <code>docker0</code>:


<pre style="font: 1em Courier New, monospace;">
<pre>
xsvacer:
xsvacer:
   webide:
   webide:
Line 152: Line 152:
== Настройка доступа к общему хранилищу с исходными файлами для контейнера Svacer и контейнеров IDE ==
== Настройка доступа к общему хранилищу с исходными файлами для контейнера Svacer и контейнеров IDE ==


При запуске IDE для просмотра снимка, Svacer экспортирует исходный код снимка в папку на docker-хосте. Далее эта папка монтируется к контейнеру IDE, к пути <code>/home/project</code>, который использует Theia IDE в качестве папки проекта.
При запуске IDE для просмотра снимка, Svacer экспортирует исходный код снимка в папку на docker-хосте. Далее эта папка монтируется в контейнер IDE, к пути <code>/home/project</code>, который использует Theia IDE в качестве папки проекта.


При развёртывании Svacer в docker-контейнере необходимо настроить экспорт исходников в папку, которая может быть примонтирована к контейнеру IDE.
При развёртывании Svacer в docker-контейнере необходимо настроить экспорт исходников в папку, которая может быть примонтирована к контейнеру IDE.
Line 158: Line 158:
=== Решение ===
=== Решение ===


Путь к корневой папке, в которую будут экспортироваться исходники снимков, задаётся в конфигурационном параметре [https://svacer.ispras.ru/mediawiki/index.php?title=Help:XSvacer:Webide#.D0.91.D0.B0.D0.B7.D0.BE.D0.B2.D1.8B.D0.B5_.D0.BF.D0.B0.D1.80.D0.B0.D0.BC.D0.B5.D1.82.D1.80.D1.8B_.D0.BA.D0.BE.D0.BD.D1.84.D0.B8.D0.B3.D1.83.D1.80.D0.B0.D1.86.D0.B8.D0.B8_.D0.B7.D0.B0.D0.BF.D1.83.D1.81.D0.BA.D0.B0 <code>sourcesroot</code>]. Так как этот же параметр используется для настройки пути к корневой папке на docker-хосте, которая будет примонтирована к контейнеру IDE, то пути к папке с исходным кодом снимков должны совпадать в контейнере Svacer и на docker-хосте.
Путь к корневой папке, в которую будут экспортироваться исходники снимков, задаётся в конфигурационном параметре [[Help:XSvacer:Webide#Базовые_параметры_конфигурации_запуска|sourcesroot]]. Так как этот же параметр используется для настройки пути к корневой папке на docker-хосте, которая будет примонтирована к контейнеру IDE, то пути к папке с исходным кодом снимков должны совпадать в контейнере Svacer и на docker-хосте.


''' Пример конфигурации '''
''' Пример конфигурации '''


<code>svacer.cfg</code>:
'''svacer.cfg'''


<pre style="font: 1em Courier New, monospace;">
<pre>
xsvacer:
xsvacer:
   webide:
   webide:
Line 174: Line 174:
</pre>
</pre>


<code>docker-compose.yml</code>:
'''docker-compose.yml'''


<pre style="font: 1em Courier New, monospace;">
<pre>
services:
services:
   ...
   ...
Line 192: Line 192:


<div class="toccolours mw-collapsible mw-collapsed">
<div class="toccolours mw-collapsible mw-collapsed">
<div style="font-weight:bold;line-height:1.6;"><code>svacer.cfg</code></div>
<div style="font-weight:bold;line-height:1.6;">svacer.cfg</div>
<div class="mw-collapsible-content">
<div class="mw-collapsible-content">
{{Note|type=info|text=Ниже приведён файл <code>svacer.cfg</code> содержащий только секцию <code>xsvacer</code>. Если файл <code>svacer.cfg</code> создан и содержит другие настройки, то приведённые ниже настройки должны быть перенесены в существующий файл}}
{{Note|type=info|text=Ниже приведён файл <code>svacer.cfg</code> содержащий только секцию <code>xsvacer</code>. Если файл <code>svacer.cfg</code> создан и содержит другие настройки, то приведённые ниже настройки должны быть перенесены в существующий файл}}


<pre style="font: 1em Courier New, monospace;">
<pre>
xsvacer:
xsvacer:
   features:
   features:
Line 246: Line 246:


<div class="toccolours mw-collapsible mw-collapsed">
<div class="toccolours mw-collapsible mw-collapsed">
<div style="font-weight:bold;line-height:1.6;"><code>docker-compose.yml</code></div>
<div style="font-weight:bold;line-height:1.6;">docker-compose.yml</div>
<div class="mw-collapsible-content">
<div class="mw-collapsible-content">
{{Note|type=info|text=Изменены внесены в файл [https://svacer.ispras.ru/extra/docker-compose.yml docker-compose.yml]}}
{{Note|type=info|text=Изменены внесены в файл [https://svacer.ispras.ru/extra/docker-compose.yml docker-compose.yml]}}


<pre style="font: 1em Courier New, monospace;">
<pre>
services:
services:
   postgresql:
   postgresql:
Line 308: Line 308:
   svacer:
   svacer:
</pre>
</pre>
</div></div>
</div></div>



Latest revision as of 15:35, 13 May 2025

Поддержка функциональности webide, когда Svacer развёрнут в docker-контейнере

На данный момент функциональность запуска Theia IDE по умолчанию настроена на запуск Svacer с помощью исполняемого файла, "рядом" с docker'ом.

Для поддержки функциональности webide, когда Svacer развёрнут в docker-контейнере, необходимо решить следующие задачи:

  1. Предоставить docker-контейнеру Svacer доступ к управлению контейнерами IDE;
  2. Активация функциональности webide в docker-контейнере Svacer;
  3. Организация сетевого доступа между контейнером Svacer и контейнерами IDE;
  4. Настройка доступа к общему хранилищу с исходными файлами для контейнера Svacer и контейнеров IDE;

Детали каждой задачи и варианты решения приведены ниже.

Приведённые решения основаны на развёртывании Svacer с помощью файла docker-compose.yml

Предоставление контейнеру Svacer доступа к управлению контейнерами IDE

Функциональность запуска IDE основана на том, что Svacer управляет контейнерами IDE с помощью API docker'а. Поэтому необходимо предоставить доступ к API docker'а из docker-контейнера Svacer.

Решение

Один из способов подключения к API docker'а является использование socket-файла /var/run/docker.sock. Чтобы Svacer получил доступ к этому файлу, его необходимо примонтировать к docker-контейнеру:

services:
  ...
  svacer:
    ...
    volumes:
      ...
      - /var/run/docker.sock:/var/run/docker.sock:ro
      ...

Изменение настроек Svacer (svacer.cfg)

Дальнейшие шаги связаны с изменением настроек Svacer. В случае, когда Svacer развёрнут в docker-контейнере, это можно сделать следующим образом:

  1. Создать конфигурационный файл svacer.cfg;
  2. Перенести настройки функциональности webide;
  3. Примонтировать файл к рабочей директории docker-контейнера Svacer;
  4. Перезапустить контейнер Svacer;

Чтобы примонтировать svacer.cfg к контейнеру Svacer нужно в файл docker-compose.yml добавить строку:

services:
  ...
  svacer:
    ...
    volumes:
      ...
      - /path/to/svacer.cfg:/svacer/bin/svacer.cfg:ro
  ...

Перенос настроек функциональности webide в svacer.cfg

Скопировать секцию с настройками по умолчанию в svacer.cfg

Активация функциональности webide

Варианты активации функциональности webide:

  • Указать флаг --xsvacer.features webide при запуске Svacer;
  • В конфигурационном файле svacer.cfg добавить значение webide в список /xsvacer/features;

Решение

Второй вариант активации функциональности является более предпочтительным. В svacer.cfg необходимо добавить следующую настройку:

xsvacer:
  features:
    - webide # активация функциональности webide
  ...
Альтернативное решение с использованием флага --xsvacer.features webide

В docker-compose.yml используется docker-образ Svacer, собранный на основе Dockerfile. В данном файле содержится инструкция запуска Svacer

CMD /svacer/bin/svacer-server --memsettings=${MEMSETTINGS} run --store $STORE --pg $SVACER_PG_URL

Для активации функциональности IDE необходимо переопределить аргументы инструкции CMD в файле docker-compose.yml:

services:
  ...
  svacer:
    ...
    command: /bin/sh -c '/svacer/bin/svacer-server --memsettings=$${MEMSETTINGS} run --store $$STORE --pg $${SVACER_PG_URL} --xsvacer.features webide'
Проверить актуальные значения аргументов инструкции CMD docker-образа можно с помощью команды docker image inspect {имя образа}

Организация сетевого доступа между контейнером Svacer и контейнерами IDE

В текущей реализации при запуске docker-контейнер IDE публикует внутренний порт web-приложения Theia IDE на случайный порт всех сетевых интерфейсов (0.0.0.0) docker-хоста. Svacer хранит информацию на каком порту хоста развёрнуты соответствующие инстансы IDE и проксирует запросы к ним.

Необходимо организовать доступ контейнера Svacer к портам docker-хоста, на которых опубликованы контейнеры IDE.

Решение

Чтобы предоставить доступ контейнера Svacer к контейнеру IDE нужно:

  1. Определить ip-адрес интерфейса docker-хоста docker0;
  2. Изменить настройку публикации портов контейнеров IDE на значение ip-адреса docker0.

Определение ip-адреса docker0

На docker-хосте выполнить команду ip a:

$ ip a
...
6: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 82:70:b5:24:50:e4 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

В данном случае искомый ip-адрес — 172.17.0.1

Изменение настроек публикации портов контейнеров IDE

Настройки публикации порта контейнера IDE заданы в конфигурации запуска IDE. Настройки по умолчанию должны быть предварительно перенесены в svacer.cfg.

В файле svacer.cfg нужно добавить параметр hostip со значением ip-адреса интерфейса docker0:

xsvacer:
  webide:
    theia:
      1-46-0: &1-46-0
        ...
        docker:
          ...
          container:
            ...
            hostconfig:
              ...
              portbindings:
                "3000/tcp":
                  - hostport: 0
                    hostip: 172.17.0.1 # новый параметр
            ...


Настройка доступа к общему хранилищу с исходными файлами для контейнера Svacer и контейнеров IDE

При запуске IDE для просмотра снимка, Svacer экспортирует исходный код снимка в папку на docker-хосте. Далее эта папка монтируется в контейнер IDE, к пути /home/project, который использует Theia IDE в качестве папки проекта.

При развёртывании Svacer в docker-контейнере необходимо настроить экспорт исходников в папку, которая может быть примонтирована к контейнеру IDE.

Решение

Путь к корневой папке, в которую будут экспортироваться исходники снимков, задаётся в конфигурационном параметре sourcesroot. Так как этот же параметр используется для настройки пути к корневой папке на docker-хосте, которая будет примонтирована к контейнеру IDE, то пути к папке с исходным кодом снимков должны совпадать в контейнере Svacer и на docker-хосте.

Пример конфигурации

svacer.cfg

xsvacer:
  webide:
    theia:
      1-46-0: &1-46-0
        ...
        sourcesroot: /data/snapshot-sources
        ...

docker-compose.yml

services:
  ...
  svacer:
    ...
    volumes:
      ...
      - /data/snapshot-sources:/data/snapshot-sources # привязка с разрешением на запись
      ...

Примеры файлов с описанными изменениями

Ниже приведены версии конфигурационных файлов, с изменениями которые были описаны выше. Изменённые строки содежат комментарии.

svacer.cfg
Ниже приведён файл svacer.cfg содержащий только секцию xsvacer. Если файл svacer.cfg создан и содержит другие настройки, то приведённые ниже настройки должны быть перенесены в существующий файл
xsvacer:
  features:
    - webide # активация функциональности webide
  webide:
    theia:
      1-46-0: &1-46-0
        disabled: true
        order: 0
        name: Theia blueprint web IDE (v1.46.0)
        sourcesroot: /data/snapshot-sources # путь к базовой папке с исходным кодом снимков
        sarif:
          filenametemplate: "warnings.sarif"
          commenttemplate: "{{if trim .Text}}`[{{.CreateTs.Local.Format \"02.01.2006 15:04\"}}] {{.CreatedBy}}:`\n\n{{trim .Text}}{{end}}"
        healthcheck:
          starttoreadyretries: 10
          starttoreadyperiod: 200ms
        docker:
          hostid: default
          containernametemplate: "theia-1-46-{{.StartArgs.SnapshotID}}"
          image:
            name: theia-blueprint
            tag: 1.46.0.sarif.clang.10.0.0
            sourcetype: file
            sourcefileurl: https://svacer.ispras.ru/docker/images/theia-blueprint.1.46.0.sarif.clang.10.0.0.tar.gz
          containerconfiglabels:
            - "com.docker.compose.project": svacer
          container:
            config:
              env:
                - THEIA_WEBVIEW_EXTERNAL_ENDPOINT={{hostname}}
            hostconfig:
              autoremove: true
              portbindings:
                "3000/tcp":
                  - hostport: 0
                    hostip: 172.17.0.1 # ip-адрес интерфейса хоста docker0
        manager:
          type: default
      default:
        <<: *1-46-0
        order: 0
        disabled: false
Проверить актуальные значения аргументов инструкции CMD docker-образа можно с помощью команды docker image inspect {имя образа}
docker-compose.yml
Изменены внесены в файл docker-compose.yml
services:
  postgresql:
    image: postgres:17.0-bullseye
    container_name: svacer-postgres
    restart: always
    shm_size: 1g
    environment:
      - POSTGRES_DB=svace
      - POSTGRES_USER=svace
      - POSTGRES_PASSWORD=svace
      - POSTGRES_ROOT_PASSWORD=svace
    volumes:
      - svacer-postgres:/var/lib/postgresql/data
    networks:
      svacer:
    healthcheck:
      test: pg_isready -U svace
      interval: 8s
      start_period: 16s
      timeout: 4s
      retries: 4

  svacer:
    image: ispras/svacer:10-0-0
    container_name: svacer
    restart: always
    shm_size: 1g
    depends_on:
      postgresql:
        condition: service_healthy
    ports:
      - "3002:3002"
      - "8080:8080"
    environment:
      - SVACER_PG_URL=postgres://svace:svace@postgresql:5432/svace
      - STORE=/data/store
    volumes:
      - svacer-object-store:/data/store
      - /var/run/docker.sock:/var/run/docker.sock:ro # доступ к API docker'а из контейнера Svacer
      - ./svacer.cfg:/svacer/bin/svacer.cfg:ro # привязка конфигурационного файла svacer.cfg
      - /data/snapshot-sources:/data/snapshot-sources # writable привязка коневой папки с исходниками снимков. Пути до и после ":" должны совпадать.
    networks:
      svacer:
    healthcheck:
      test: curl --fail http://localhost:8080/api/health || exit 1
      interval: 8s
      start_period: 16s
      timeout: 4s
      retries: 4

volumes:
  svacer-postgres:
  svacer-object-store:

networks:
  svacer:

Схемы компонентов

Ниже приведены концептуальные схемы компонентов, на базе которых основана функциональность запуска IDE. Данные схемы могут быть использованы для поиска других решений приведённых выше задач.

Стандартный запуск Svacer в виде сервиса

Запуск Svacer внутри docker-контейнера