Arbeiten mit FME Flow-Container-Umgebungsvariablen

Um eine zusätzliche Konfiguration einer FME Flow-Bereitstellung mit Docker Compose durchzuführen, definieren Sie einen Umgebungsvariablenabschnitt unter dem entsprechenden Containerdienst. Jeder Dienst verfügt über verschiedene Umgebungsvariablen, die definiert werden können.

FME Flow Web Services Container

FME Engine Container

FME Flow Core Container

NGINX-Container

Andern der Datenbankverbindung

Hinweis  Um FME Flow für die Verbindung mit Microsoft SQL Server oder einer Oracle-Datenbank zu konfigurieren, wenden Sie sich an den Safe Support oder an Ihren lokalen Distributor.

Initialisieren der PostgreSQL-Datenbank

Wenn ein neuer Stack gestartet wird, füllt ein Modus des Core-Containers eine leere PostgreSQL-Datenbank mit dem FME Flow-Datenbankschema, bevor er FME Flow startet. Wenn Sie eine vorhandene PostgreSQL-Datenbank für Ihre FME Flow-Instanz verwenden möchten, müssen Sie einen Initialisierungscontainer mit den folgenden Umgebungsvariablen konfigurieren.

Der folgende Befehl füllt beispielsweise das Schema in einer vorhandenen PostgreSQL-Datenbank, die auf dem Host my-psgql-hostname ausgeführt wird, und beendet sich dann.

docker run -e PGSQLHOSTNAME=my-pgsql-hostname -e PGSQLPORT=5432 -e PGSQLADMINUSER=postgres -e PGSQLADMINPASSWORD=postgres -e PRIMARY_PROCESS=initpgsql safesoftware/fmeserver-core:2018-latest

Umgebungsvariable

Voreingestellter Wert

Beschreibung

PGSQLHOSTNAME fmeserverdb

Der Hostname der PostgreSQL-Datenbank, die initialisiert werden soll.

PGSQLPORT 5432 Der Port für die Verbindung zur PostgreSQL-Datenbank.
PGSQLADMINUSER postgres Ein Benutzer, der in der PostgreSQL-Datenbank vorhanden ist und über Berechtigungen zum Erstellen einer Datenbank verfügt.
PGSQLADMINPASSWORD   Das Kennwort für den PGSQLADMINUSER.
PGSQLADMINDATABASE Gleicher Wert wie PGSQLADMINUSER Stellen Sie dies auf die Datenbank ein, zu der zunächst eine Verbindung als PGSQLADMINUSER hergestellt werden soll, um das Datenbankschema im Dienst fmeserverdbinit zu initialisieren.
PGSQLUSERNAME fmeserver Der Benutzer, der als Teil des FME Flow-Schemas erstellt werden soll, mit dem FME Flow eine Verbindung zur Datenbank herstellt.
PRIMARY_PROCESS   Setzen auf initpgsql.
AZUREPOSTGRESQL false Setzen Sie dies im fmeserverdbinit-Dienst in der Docker Compose-Datei auf true, wenn Sie eine Azure-Datenbank für PostgreSQL verwenden, um sicherzustellen, dass die Verbindungszeichenkette richtig formatiert wird.

Ausführen des Containers unter einem anderen Benutzer

Standardmäßig werden die FME Flow-Container als Benutzer mit dem Namen fmeserver in der Gruppe fmeserver mit der UID und der GID 1363 ausgeführt. Möglicherweise möchten Sie, dass die UID und GID des Benutzers im Container mit einem auf dem Host-Computer definierten Benutzer übereinstimmen. Beispielsweise möchten Sie anstelle des Docker-Volumes einen Host-Bind-Mount für das FME Flow System Share Volume verwenden. Wenn Sie ein Host-Verzeichnis in den Container einhängen, ist es optimal, wenn die Berechtigungen in diesem Ordner mit einem echten Benutzer auf dem Host übereinstimmen.

Um den Benutzer und die Gruppe, die einen Container ausführen, mit einem auf dem Host-Computer definierten Benutzer abzugleichen, übergeben Sie die Variablen FMESERVER_UID und FMESERVER_GID, die auf die UID und GID des Benutzers bzw. der Gruppen-ID gesetzt sind, die Sie verwenden möchten. Darüber hinaus müssen Sie die Container als Benutzer "root"ausführen, damit der Container-Init die richtigen Berechtigungen für die Dateien festlegen kann. Dies geschieht mit einem Docker-Befehl run mit dem Flag --user=0 und in Compose mit dem Attribut user: 0, um als "root" ausgeführt zu werden.

Ausführen von Containern in der lokalen Zeitzone

Standardmäßig laufen die FME Flow-Container in der Koordinierten Weltzeit (UTC). Um sich an die lokale Zeitzone der Container-Hosts anzupassen, hängen Sie Zeitzonendateien in die Container fmeserverweb, fmeservercore, fmeserverqueue und fmeserverengine wie folgt ein:

Volumes:

- "/etc/timezone:/etc/timezone:ro"

- "/etc/localtime:/etc/localtime:ro"

Alternativ setzen Sie die Umgebungsvariable TZ für jeden Container wie folgt:

TZ=<timezone>

wobei <timezone> ein gültiger Ländercode ist. Eine Liste der Ländercodes finden Sie unter https://en.wikipedia.org/wiki/List_of_tz_database_time_zones.