Skip to content

Системные требования

Один контейнер, и короткий список того, что ему нужно

Что нужно контейнеру, прежде чем кто-то его развернёт: среда выполнения внутри, единственный порт, который он публикует, том, который он должен сохранять, и хост, который мы рекомендуем ему выделить.

Среда выполнения внутри образа

Две языковые среды выполнения в одном контейнере, и у второй есть конкретная причина, а не предпочтение.

Требования к среде выполнения контейнера ТабТотал, с файлом, из которого прочитано каждое
Что этоПочему, и где проверить
Базовый образpython:3.13-slimОдна и та же база на обоих этапах сборки. Что скомпилировано, то и работает. Dockerfile:13
Python3.13 или новееПротестировано на 3.13 в непрерывной интеграции. pyproject.toml:9, .github/workflows/tests.yml:91
.NETRuntime 8.0Только среда выполнения, не SDK. Migrate оборачивает собственный .NET Migration SDK от Tableau. Среда выполнения путешествует вместе с ним внутри образа. Dockerfile:101
Запускается какuid 10001, пользователь ttcRoot используется один раз, чтобы принять владение подключённым томом, и сбрасывается до запуска приложения. Dockerfile:188
Архитектура процессораamd64Сборка arm64 чисто загружается на хосте x86 и затем не запускается. Архитектуру стоит проверить до развёртывания, а не после.

Сеть достигает только один слушатель

Управляемые приложения отвечают на loopback внутри контейнера. Шлюз до них дотягивается, и больше никто.

Все 14 управляемых приложений привязываются к локальному интерфейсу внутри контейнера и никогда не публикуются. Один порт принимает каждый запрос, а шлюз направляет каждый к приложению, которому он принадлежит, удерживая одну сессию Tableau от вашего имени.

Это свойство, которое можно проверить, а не обещание, которое приходится принять на веру. Выведите список опубликованных портов работающего контейнера, и вы найдёте один, каким бы ни был набор внутри в этом выпуске.

Порты, и что стоит перед ними

Контейнер отдаёт незашифрованный трафик и никогда не хранит сертификат. Защита транспорта остаётся там, где вы её уже обеспечиваете.

Сетевые требования контейнера, с файлом, из которого прочитано каждое
Что этоПочему, и где проверить
Публикуемый порт8865 по умолчаниюЗадаётся переменной окружения PORT. Развёртывание за прокси обычно отображает его, а не меняет. Dockerfile:236
Порты приложенийс 8851 по 8869, на loopbackКаждое управляемое приложение привязывается к 127.0.0.1 внутри контейнера и никогда не публикуется. Шлюз до них дотягивается, а сеть нет.
Входящие правила80 и 443 для всех, административный доступ с ваших собственных адресовСам порт приложения остаётся неопубликованным.
Безопасность транспортаТерминируется перед контейнеромКонтейнер всегда отдаёт обычный HTTP и никогда не держит сертификат. Безопасностью транспорта владеет ваш балансировщик или обратный прокси, где она и так находится для всего остального, что вы запускаете.
Пересылаемые заголовкиДоверие только тогда, когда вы это скажетеДоверие к заголовкам по умолчанию выключено. Напрямую доступный контейнер игнорирует пересланный адрес.

Что должно сохраняться

Один том хранит всё, что пересборка не должна потерять. Эта страница называет, что внутри, потому что инструкция «сделайте резервную копию пути» не говорит вам, что вы потеряете.

Постоянное хранилище, которое нужно контейнеру, и что содержит каждый том
Что этоЗначениеПочему, и где проверить
Том данных/app/dataКаталог пользователей, журнал изменений, административный журнал аудита, профили семантического слоя и зашифрованные записи подключений. Dockerfile:215
Том артефактов/app/artifactsКуда Offboard записывает результаты, которые запрашивает аудит.
Размер томаВ пределах рекомендации 500 ГБХранилища это файлы JSON и JSON Lines, а не база данных, а журналы наблюдаемости ротируются на 5 МБ с сохранением пяти файлов.
ВладениеИсправляется при каждом запускеТочка входа принимает владение томом до сброса привилегий. Том, созданный более ранней версией, остаётся читаемым и никогда не очищается тихо.
Файлы рядом с секретамиЗаписываются с правами 0600, атомарноЧастичная запись оставляет предыдущий файл целым, а не обрезанным.

Что мы рекомендуем ему выделить

Один контейнер на хосте Docker, с запасом для работы. Это цифры, под которые Бореон рекомендует выделять ресурсы.

Рекомендуемый хост для одного контейнера ТабТотал
Что этоЗначениеЧто на это влияет
ХостХост DockerОдин самодостаточный контейнер на любом хосте Docker, который у вас уже есть. Оркестратор не требуется.
Память8 ГБ ОЗУДве среды выполнения и безголовый браузер делят один контейнер.
Доступный диск500 ГБПокрывает образ, постоянные тома и место для артефактов, которые запрашивает аудит.

Как развёртывание сообщает о себе

Спросите контейнер, и он ответит версией, которую выполняет, а это лучший источник для этого числа, чем любая страница, включая эту.

Точка доступа

GET /health. Отвечает статусом, названием продукта и работающей версией. Развёртывание можно подтвердить, а не предполагать.

Интервал

Каждые 30 секунд

Тайм-аут

4 секунды

Отсрочка при запуске

60 секунд. Шлюз ждёт, пока ответит каждое управляемое приложение, прежде чем сообщить о готовности. Холодный старт медленнее перезапуска.

Повторы

5