Skip to content

Configuration requise

Un seul conteneur, et une courte liste de ce dont il a besoin

Ce dont le conteneur a besoin avant que quiconque le déploie : le runtime qu’il embarque, le seul port qu’il publie, le volume qu’il doit conserver, et l’hôte que nous vous recommandons de lui donner.

Le runtime dans l’image

Deux runtimes de langage dans un seul conteneur, et le second a une raison précise, pas une préférence.

Les exigences de runtime du conteneur TabTotal, avec le fichier d’où chacune a été lue
Ce que c’estPourquoi, et où le vérifier
Image de basepython:3.13-slimLa même base dans les deux étapes de build. Ce qui est compilé est ce qui s’exécute. Dockerfile:13
Python3.13 ou plus récentTesté sur 3.13 en intégration continue. pyproject.toml:9, .github/workflows/tests.yml:91
.NETRuntime 8.0Le runtime seulement, pas le SDK. Migrate enveloppe le .NET Migration SDK de Tableau. Le runtime voyage avec lui dans l’image. Dockerfile:101
S’exécute en tant queuid 10001, utilisateur ttcRoot est utilisé une fois, pour prendre possession d’un volume monté, et abandonné avant le démarrage de l’application. Dockerfile:188
Architecture du processeuramd64Un build arm64 se charge proprement sur un hôte x86 puis ne démarre pas. L’architecture mérite d’être vérifiée avant un déploiement, pas après.

Un seul écouteur atteint le réseau

Les applications gouvernées répondent en loopback à l’intérieur du conteneur. La passerelle les atteint, et rien d’autre.

Les 14 applications gouvernées se lient à l’interface locale à l’intérieur du conteneur et ne sont jamais publiées. Un seul port fait entrer chaque requête, et la passerelle achemine chacune vers l’application qui la possède, en tenant une seule session Tableau pour vous.

C’est une propriété que vous pouvez vérifier plutôt qu’une promesse à accepter. Listez les ports publiés du conteneur en cours d’exécution et vous en trouverez un, quel que soit l’effectif qu’il contient dans cette version.

Les ports, et ce qui se trouve devant

Le conteneur sert du trafic en clair et ne détient jamais de certificat. La sécurité du transport reste là où vous l’exploitez déjà.

Les exigences réseau du conteneur, avec le fichier d’où chacune a été lue
Ce que c’estPourquoi, et où le vérifier
Port publié8865 par défautDéfini par la variable d’environnement PORT. Un déploiement derrière un proxy le mappe généralement plutôt que de le changer. Dockerfile:236
Ports des applications8851 à 8869, sur la boucle localeChaque application gouvernée se lie à 127.0.0.1 dans le conteneur et n’est jamais publiée. La passerelle les atteint et le réseau non.
Règles entrantes80 et 443 vers le monde, accès administratif depuis vos propres adressesLe port de l’application lui-même reste non publié.
Sécurité du transportTerminée en amont du conteneurLe conteneur sert toujours du HTTP simple et ne détient jamais de certificat. Votre répartiteur de charge ou votre reverse proxy possède la sécurité du transport, là où elle se trouve déjà pour tout ce que vous exécutez.
En-têtes transmisApprouvés seulement quand vous le ditesLa confiance dans les en-têtes est désactivée par défaut. Un conteneur directement joignable ignore une adresse transmise.

Ce qui doit persister

Un seul volume contient tout ce qu’une reconstruction ne doit pas perdre. Cette page nomme ce qu’il contient, parce qu’une consigne de sauvegarder un chemin ne vous dit pas ce que vous perdriez.

Le stockage persistant dont le conteneur a besoin, et ce que contient chaque volume
Ce que c’estValeurPourquoi, et où le vérifier
Volume de données/app/dataL’annuaire des utilisateurs, le registre des changements, le journal d’audit administratif, les profils de la couche sémantique et les enregistrements de connexion chiffrés. Dockerfile:215
Volume des artefacts/app/artifactsLà où Offboard écrit les livrables qu’un audit demande.
Taille du volumeDans la recommandation de 500 GoLes magasins sont des fichiers JSON et JSON Lines, pas une base de données, et les journaux d’observabilité tournent à 5 Mo en gardant cinq fichiers.
PropriétéCorrigée à chaque démarrageLe point d’entrée prend possession du volume avant d’abandonner ses privilèges. Un volume créé par une version antérieure reste lisible et n’est jamais vidé en silence.
Fichiers proches des secretsÉcrits en 0600, atomiquementUne écriture partielle laisse le fichier précédent intact, pas un fichier tronqué.

Ce que nous vous recommandons de lui donner

Un seul conteneur sur un hôte Docker, avec de la marge pour travailler. Ce sont les chiffres sur lesquels Boreon vous recommande de provisionner.

L’hôte recommandé pour un seul conteneur TabTotal
Ce que c’estValeurCe qui pèse dessus
HôteUn hôte DockerUn seul conteneur autonome sur n’importe quel hôte Docker que vous exécutez déjà. Aucun orchestrateur n’est requis.
Mémoire8 Go de RAMDeux runtimes de langage et un navigateur sans interface partagent un seul conteneur.
Disque disponible500 GoCouvre l’image, les volumes persistants et de la place pour les artefacts qu’un audit demande.

Comment un déploiement se signale

Demandez au conteneur et il répond avec la version qu’il exécute, ce qui est une meilleure source pour ce numéro que n’importe quelle page, celle-ci comprise.

Point de terminaison

GET /health. Répond avec un statut, le nom du produit et la version en cours. Un déploiement peut être confirmé, pas supposé.

Intervalle

Toutes les 30 secondes

Délai d’attente

4 secondes

Délai de grâce au démarrage

60 secondes. La passerelle attend que chaque application gouvernée réponde avant de se déclarer prête. Un démarrage à froid est plus lent qu’un redémarrage.

Nouvelles tentatives

5