Docker-Container des Oracle-App-Gateways bereitstellen
Das App-Gateway kann mit OVA oder mit Docker bereitgestellt werden. Hier erfahren Sie, wie Sie den Docker-Container des Oracle-App-Gateways bereitstellen.
Voraussetzungen
- Laden Sie das Docking-Image des App-Gateways herunter. Öffnen Sie das Navigationsmenü , und wählen Sie Identität und Sicherheit aus. Wählen Sie unter Identität die Option Domains aus. Klicken Sie auf den Namen der Identitätsdomain, in der Sie arbeiten möchten. Möglicherweise müssen Sie das Compartment ändern, um die gewünschte Domain zu finden. Klicken Sie anschließend auf Einstellungen und dann auf Downloads.
- Erstellen Sie eine Wallet-Datei mit der Client-ID und dem Client Secret des App-Gateways, das in der Admin-Konsole erstellt wurde. Geben Sie der Wallet-Datei den Namen cwallet.sso, und kopieren Sie sie in den lokalen Ordner, damit der Container die Datei aufnehmen kann. Hinweis: Das Wallet-Tool kann von der IAM-Konsole heruntergeladen werden. Blenden Sie in der IAM-Konsole die Navigationsleiste ein, wählen Sie Einstellungen aus, und wählen Sie Downloads aus.
- Installieren Sie Docker (Befehl:
$ yum install docker-engine
). - Fügen Sie den aktuellen Benutzer zur Docker-Gruppe hinzu (Befehl:
$ sudo usermod -a -G docker $USER
).
Docker-Image extrahieren
.tar.gz
aufweist, müssen Sie die folgenden Befehle verwenden, um das Image zu extrahieren, bevor Sie den Container erstellen können. - Laden Sie die
.tar.gz
-Datei in die lokale Docker-Registry. Befehl:$ docker load -i <.tar.gz file>
- Stellen Sie sicher, dass das Image in der lokalen Docker-Registry angezeigt wird. Befehl:
$ docker images
App-Gatewaycontainer erstellen
Umgebungsvariablen für App-Gateway festlegen
Um den Docker-Container des App-Gateways auszuführen, müssen die folgenden Umgebungsvariablen in der Datei appgateway-env
festgelegt sein. Wichtig: Diese Werte werden nicht validiert. Wenn Sie ungültige Werte konfigurieren, kann der Docker-Container des App-Gateways nicht erstellt werden.
-
CG_APP_TENANT=<tenant name>
IDCS_INSTANCE_URL=<idcs instance url>
. Die für den Zugriff auf die IAM-Instanz erforderliche URL.NGINX_DNS_RESOLVER=<resolver ip>
. Konfigurieren Sie den in der Datei/etc/resolv.conf
gefundenen Name Server. Der Standardwert lautet127.0.0.1
.
Docker ausführen
Der lokale Ordner wird als Volume gemountet und ist im Docker-Container zugänglich.
Die Wallet-Datei (die Client-ID und Client Secret enthält), die Sie als Voraussetzung erstellt haben (cwallet.sso
), muss in den lokalen Ordner kopiert werden, damit der Container die Datei referenzieren kann.
$ docker run -it -d
--name <container name>
--env-file <path to env file>
--env HOST_MACHINE=`hostname -f`
--volume <local folder>/cwallet.sso:/usr/local/nginx/conf/cwallet.sso
--net=host/<User-defined bridge name> <image name>
Beispielcontainer mit Hostnetzwerk ohne Portzuordnung
Wenn die für den App-Gatewayhost konfigurierte Portnummer kleiner als 1024 ist, müssen Sie Bridgenetworking für Docker zusammen mit der Portzuordnung verwenden. Verwenden Sie in diesem Fall den unten stehenden Beispielbefehl für Bridgenetworking mit Portzuordnung für die Ausführung des Docker-Containers.
$ docker run -it -d
--name appgateway
--env-file appgateway-env
--env HOST_MACHINE=`hostname -f`
--volume /opt/appgateway/cwallet.sso:/usr/local/nginx/conf/cwallet.sso
--net=host opc-delivery.docker.acme.com/idcs/appgateway:RELEASE-BUILDNUMBER
Beispiel für Bridgenetworking mit Portzuordnung
Im folgenden Beispiel wird Bridgenetworking mit Portzuordnung (Ports 80 bis 65535) verwendet.
Voraussetzung: Bevor Sie die Bridgenetworkingkonfiguration verwenden, fügen Sie iptables
in der Datei /etc/docker/daemon.json
hinzu, bzw. setzen Sie diesen Wert dort auf true
. Dann kann der Docker-Daemon die für die Portzuordnung erforderlichen iptables-Filterregeln bearbeiten.
$ docker run -it -p 80:9000 -d
--name appgateway
--env-file /home/<username>/dev/appgateway_pool/appgateway_env --env HOST_MACHINE=`hostname -f`
--volume /opt/appgateway/cwallet.sso:/usr/local/nginx/conf/cwallet.sso
--net=bridge-net idcs.docker.acme.com/idcs/appgateway: RELEASE-BUILDNUMBER
Hinweis: Docker aktualisiert iptables/firewalld intern mit den Routen für den Port, wenn der oben genannte Befehl ausgeführt wird.
Zusätzliche Containerschritte
- Konfigurierte SSL-Zertifikate müssen in den unter Zusätzliche Eigenschaften angegebenen Speicherort kopiert werden. Gehen Sie zu Sicherheit, App-Gateways, <Gateway>, Hosts, Zusätzliche Eigenschaften, und notieren Sie sich den Speicherort.
- Führen Sie Befehle wie die Folgenden aus. Hinweis: Der Speicherort des Zertifikats hängt vom Speicherort ab, den Sie im App-Gatewayhost angegeben haben.
$ docker cp deploy/docker/nginx/build/test-config/certs/my-appgateway.cert appgateway:/scratch/docker/cloudgate/certs/my-appgateway.cert
$ docker cp deploy/docker/nginx/build/test-config/certs/my-appgateway.key appgateway:/scratch/docker/cloudgate/certs/my-appgateway.key
Weitere Informationen
-
Wie bestimme ich, ob mein Container erfolgreich erstellt wurde?
Führen Sie den Befehl
$ docker ps -a
aus, und stellen Sie sicher, dassSTATUS
in der Liste für Ihren Containernamen Up lautet. -
Wie bestimme ich anhand der Logs, warum der Container beendet wurde, falls "exited" als STATUS des Containers angezeigt wird?
Führen Sie den Befehl
$ docker logs <container name>
aus. Mit diesem Befehl werden die Logmeldungen des App-Gateways ausgegeben. -
Wie bearbeite ich die Datei cloudgate.config im Container?
Führen Sie den Befehl
$ docker exec -it <container name> bash
aus.Führen Sie diesen Befehl aus, um auf den Container zuzugreifen, wenn der Container mit einer Bash-Shell ausgeführt wird. Sobald Sie sich im Container befinden, können Sie die Dateien mit dem Nano-Editor bearbeiten.
-
Können die Zugriffslogs im JSON-Format gedruckt werden?
Ja, Sie können die Zugriffslogs im JSON-Format drucken. Fügen Sie die folgenden Zeilen zur Datei/usr/local/nginx/conf/nginx.conf
innerhalb eines HTTP-Blocks hinzu, und starten Sie das App-Gateway dann neu.log_format jsonf escape=json '{"remote_addr": "$remote_addr", "remote_user": "$remote_user", "time": [$time_local], "request": "$request", "status": $status, "body_bytes_sent": $body_bytes_sent, "http_referer": "$http_referer", "user_agent": "$http_user_agent", "x_forwarded_for": "$http_x_forwarded_for"}'; access_log /usr/local/nginx/logs/access.log jsonf;
Hinweis: Sie können die gewünschten JSON-Felder bearbeiten, indem Sie die NGINX-Variable entfernen oder hinzufügen.