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, Downloads.
  • Erstellen Sie eine Wallet-Datei mit der Client-ID und dem Client Secret des App-Gateways, das in der Admin-Konsole erstellt wurde. Nennen Sie die Wallet-Datei 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 das Navigations-Drawer ein, wählen Sie Einstellungen und dann 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

Wenn das Docker-Image das Format .tar.gz aufweist, müssen Sie die folgenden Befehle verwenden, um das Image zu extrahieren, bevor Sie den Container erstellen können.
  1. Laden Sie die .tar.gz-Datei in die lokale Docker-Registry. Befehl: $ docker load -i <.tar.gz file>
  2. Stellen Sie sicher, dass das Image in der lokalen Docker-Registry angezeigt wird. Befehl: $ docker images

App-Gatewaycontainer erstellen

Umgebungsvariablen des App-Gateways 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 erforderliche URL für den Zugriff auf die IAM-Instanz.
  • NGINX_DNS_RESOLVER=<resolver ip>. Konfigurieren Sie den in der Datei /etc/resolv.conf gefundenen Name Server. Der Standardwert lautet 127.0.0.1.

Docker ausführen

Führen Sie Docker mit dem folgenden Befehl aus.
Hinweis

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

Im folgenden Beispiel wird Hostnetworking ohne Portzuordnung verwendet. Das kann nur für Portnummern über 1024 genutzt werden.
Hinweis

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 Beispiel den unten stehenden Befehl 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-Bridgenetworking mit Portzuordnung

Im folgenden Beispiel wird Bridgenetworking mit Portzuordnung (Ports 80 bis 65535) verwendet.

Voraussetzung: Bevor Sie die Bridgenetworkingkonfiguration verwenden, fügen Sie in der Datei /etc/docker/daemon.json iptables hinzu bzw. aktualisieren 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 die iptables/firewalld intern mit den Routen für den Port, wenn der oben genannte Befehl ausgeführt wird.

Weitere Containerschritte

Wenn der Host als HTTPS konfiguriert ist, müssen Sie die folgenden zusätzlichen Schritte ausführen, um die Zertifikate in den Container zu kopieren.
  1. Konfigurierte SSL-Zertifikate müssen in das unter Zusätzliche Eigenschaften angegebene Verzeichnis kopiert werden. Gehen Sie zu Sicherheit, App-Gateways, <Gateway>, Hosts, Zusätzliche Eigenschaften, und notieren Sie sich den Speicherort.
  2. Führen Sie Befehle wie die Folgenden aus. Hinweis: Der Speicherort des Zertifikats hängt vom Ort 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

  • Woher weiß ich, ob mein Container erfolgreich erstellt wurde?

    Führen Sie den Befehl $ docker ps -a aus, und vergewissern Sie sich, dass STATUS in der Liste für Ihren Containernamen Up lautet.

  • Wie überprüfe ich anhand der Logs, warum der Container beendet wurde, falls STATUS beendet wurde?

    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 ausgegeben 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 JSON-Felder bearbeiten, die Sie interessieren, indem Sie die NGINX-Variable entfernen oder hinzufügen.