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

Umgebungsvariable |
Voreingestellter Wert |
Beschreibung |
---|---|---|
EXTERNALHOSTNAME | localhost | Der Hostname, den Benutzer verwenden, um eine Verbindung zu dieser FME Flow-Instanz herzustellen. Dies ist üblicherweise der Hostname oder die IP-Adresse des physischen Computers, auf dem die Docker-Bereitstellung ausgeführt wird, oder der externe Endpunkt des Load Balancers. Diese Variable wird für das Themen-Monitoring verwendet. Wenn Sie das Themen-Monitoring nicht verwenden müssen, belassen Sie den Wert bei localhost. |
EXTERNALPORT |
80 (Windows) 8080 (Linux) |
Der Port für die Verbindung zur FME Flow-Web-Benutzeroberfläche. Dies sollte der Port sein, der auf dem Host oder Load Balancer verfügbar ist, den Benutzer zum Herstellen der Verbindung verwenden. |
FMESERVERHOSTNAME | fmeservercore | Der Dienstname oder Hostname des FME Flow Core-Containers. |
WEBSERVERHOSTNAME | fmeserverweb | Der Dienstname oder Hostname des FME Flow Web Services Containers. |
WEBPROTOCOL | https | Das Protokoll, das FME Flow verwendet. Kann entweder http oder https sein. |
WEBSOCKETHOSTNAME | fmeserverwebsocket | Der Dienstname oder Hostname des WebSocket Server Containers. |
LOGPREFIX | Der Hostname des Containers | Das Präfix für die Protokolldateien, die von diesem Container erstellt werden. |
PGSQLHOSTNAME | fmeserverdb | Der Dienstname oder Hostname der PostgreSQL-Datenbank von FME Flow. Wenn Sie einen anderen Datenbanktyp verwenden möchten, siehe Andern der Datenbankverbindung oben. |
PGSQLPORT | 5432 | Der Port für die PostgreSQL-Datenbank von FME Flow. Wenn Sie einen anderen Datenbanktyp verwenden möchten, siehe Andern der Datenbankverbindung oben. |
POSTGRESQLSSL | false | Auf true setzen, um die PostgreSQL-Verbindung zur Verwendung von SSL zu zwingen. Dadurch wird die Option sslrequire=true zu den JDBC-Verbindungszeichenketten hinzugefügt. |
PGSQLUSERNAME | fmeserver | Der Benutzer, der als Teil des FME Flow-Schemas erstellt werden soll, mit dem FME Flow eine Verbindung zur Datenbank herstellt. |
FME Engine Container

Umgebungsvariable |
Voreingestellter Wert |
Beschreibung |
---|---|---|
ENGINEPROPERTIES |
|
Eine durch Kommas getrennte Liste von Eigenschaften, die für diese Engine festgelegt werden sollen. Engine-Eigenschaften sind nützlich bei der Zuordnung von FME Engines zu Warteschlangen. |
EXTERNALHOSTNAME | localhost | Der Hostname, den Benutzer verwenden, um eine Verbindung zu dieser FME Flow-Instanz herzustellen. Dies ist üblicherweise der Hostname oder die IP-Adresse des physischen Computers, auf dem die Docker-Bereitstellung ausgeführt wird. Dies wird für die URL der Ergebnisse des Daten-Downloads verwendet, die nach dem Ausführen eines Auftrags im Data Download Service zurückgegeben wird. Wenn Sie den Data Download Service nicht verwenden, belassen Sie den Wert bei localhost. |
EXTERNALPORT | 443 | Der Port für die Verbindung zu FME Flow. |
FMESERVERHOSTNAME | fmeservercore | Der Dienstname oder Hostname des FME Flow Core-Containers. |
PGSQLHOSTNAME | fmeserverdb | Der Dienstname oder Hostname der PostgreSQL-Datenbank von FME Flow. Wenn Sie einen anderen Datenbanktyp verwenden möchten, siehe Andern der Datenbankverbindung oben. |
PGSQLPORT | 5432 | Der Port für die PostgreSQL-Datenbank von FME Flow. Wenn Sie einen anderen Datenbanktyp verwenden möchten, siehe Andern der Datenbankverbindung oben. |
POSTGRESQLSSL | false | Auf true setzen, um die PostgreSQL-Verbindung zur Verwendung von SSL zu zwingen. Dadurch wird die Option sslrequire=true zu den JDBC-Verbindungszeichenketten hinzugefügt. |
PGSQLUSERNAME | fmeserver | Der Benutzer, der als Teil des FME Flow-Schemas erstellt werden soll, mit dem FME Flow eine Verbindung zur Datenbank herstellt. |
WEBPROTOCOL | https | Das Protokoll, das FME Flow verwendet. Kann entweder http oder https sein. |
LOGPREFIX | Der Hostname des Containers | Das Präfix für die Protokolldateien, die von diesem Container erstellt werden. |
FME_INSTANCE_NAME | Der Hostname des Containers | Der Name der Engine, die auf der Seite Engines erscheint. |
NODENAME | Der Hostname des Containers | Der Hostname der Engine, über den der Core-Container mit dieser Engine kommuniziert. |
FME Flow Core Container

Umgebungsvariable |
Voreingestellter Wert |
Beschreibung |
---|---|---|
FMESERVERHOSTNAME | fmeservercore | Der Dienstname oder Hostname des FME Flow Core-Containers. |
PGSQLHOSTNAME | fmeserverdb | Der Dienstname oder Hostname der PostgreSQL-Datenbank von FME Flow. Wenn Sie einen anderen Datenbanktyp verwenden möchten, siehe Andern der Datenbankverbindung oben. |
PGSQLPORT | 5432 | Der Port für die PostgreSQL-Datenbank von FME Flow. Wenn Sie einen anderen Datenbanktyp verwenden möchten, siehe Andern der Datenbankverbindung oben. |
POSTGRESQLSSL | false | Auf true setzen, um die PostgreSQL-Verbindung zur Verwendung von SSL zu zwingen. Dadurch wird die Option sslrequire=true zu den JDBC-Verbindungszeichenketten hinzugefügt. |
PGSQLUSERNAME | fmeserver | Der Benutzer, der als Teil des FME Flow-Schemas erstellt werden soll, mit dem FME Flow eine Verbindung zur Datenbank herstellt. |
WEBSERVERHOSTNAME | fmeserverweb | Der Dienstname oder Hostname des FME Flow Web Services Containers. |
REDISHOSTS | fmeserverqueue | Der Dienstname oder Hostname der Redis-Warteschlange. |
REDISPORT | 6379 | Der Port für die Redis-Warteschlange. |
PORTPOOL |
Diese Einstellung ist nur erforderlich, wenn FME Engines, die nicht in Docker ausgeführt werden, eine Verbindung zu diesem FME Flow Core herstellen. Wenn Engines von außerhalb des Docker-Netzwerks eine Verbindung herstellen, führen Sie folgende Schritte aus:
|
|
FIRSTLOGINCHANGEPASSWORD | true | Bei true wird der Benutzer bei der ersten Anmeldung an der FME Flow-Web-Benutzeroberfläche nach der Installation aufgefordert, das admin-Kennwort zu aktualisieren. Bei false ist die Aktualisierung des admin-Kennworts bei der ersten Anmeldung nicht erforderlich. |
MAX_TRANSACTION_RESULT_SUCCESSES | Gibt die Anzahl der erfolgreichen Umsetzungen an, bis ein Engine-Prozess neu gestartet werden soll. | |
MAX_TRANSACTION_RESULT_FAILURES | Gibt die Anzahl der fehlgeschlagenen Umsetzungen an, bis ein Engine-Prozess neu gestartet werden soll. | |
PRIMARY_PROCESS | core | Definiert den Zweck dieses Containers. Gültige Werte sind core, websocket oder initpgsql. Das Setzen auf websockel startet nur den Websocket-Prozess. Das Setzen auf initpgsql führt die Datenbank-Initialisierungsskripte für die konfigurierte Datenbank aus. Weitere Informationen finden Sie unter Initialisieren der PostgreSQL-Datenbank weiter oben. |
NGINX-Container

Umgebungsvariable |
Voreingestellter Wert |
Beschreibung |
---|---|---|
WEBPROTOCOL | https | Das Protokoll, das FME Flow verwendet. Kann entweder http oder https sein. |
EXTERNALHOSTNAME | localhost | Der Hostname, den Benutzer verwenden, um eine Verbindung zu dieser FME Flow-Instanz herzustellen. Dies ist üblicherweise der Hostname oder die IP-Adresse des physischen Computers, auf dem die Docker-Bereitstellung ausgeführt wird. Diese Variable wird für das Themen-Monitoring verwendet. Wenn Sie das Themen-Monitoring nicht verwenden müssen, belassen Sie den Wert bei localhost. |
EXTERNALPORT | 443 | Der Port für die Verbindung zu FME Flow. |
NGINX_WORKER_PROCESSES | 1 | Anzahl der zu startenden NGINX-Worker. |
Andern der Datenbankverbindung
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.