Gehostetes Apicurio Studio auf Docker

Verwenden Sie Apicurio Studio? Ich habe neulich damit angefangen. Ich bin noch nicht sicher.

Ich habe es auf Docker gehostet Die Straße war steiler als ich es mir vorgestellt hatte, also überlasse ich sie denen, die folgen.

Was ist Apicurio Studio?

Apicurio Studio ist eines der Apicurio-Projekte. OSS Open API-Designtool. Swagger ist als OpenAPI-Tool bekannt. Wenn Sie mit mehreren Personen arbeiten möchten, müssen Sie den [bezahlten Plan] verwenden (https://swagger.io/tools/swaggerhub/pricing/). Es scheint, dass es andere Tools als Swagger gibt, aber sie sind ziemlich bezahlt (für Details hier). Wenn es ums Geschäft geht, möchte ich trotzdem Ausgaben für die Hobbyentwicklung vermeiden.

Dort erfuhr ich von OSSs Apicurio Studio. Es ist nicht nur kostenlos, sondern auch attraktiv, mit GUI-basierten Vorgängen im Web entwerfen zu können. Es gibt noch keine Funktionen wie Verspotten und Testen, und es scheint, dass sie zu einem späteren Zeitpunkt hinzugefügt werden, aber ich denke, es lohnt sich zu versuchen, wenn es kostenlos ist. Aktivität ist schlampig.

Betriebsmethode

Es gibt drei Möglichkeiten, Apicurio Studio zu verwenden:

  1. Verwenden Sie die Live-Version, die offiziell als Testversion verteilt wurde
  2. Host auf einem lokalen Computer
  3. Host mit Docker

Ich denke, dass "Schnellstart" mit einem Skript, das unmittelbar nach dem Herunterladen verwendet werden kann, für 2 einfach ist. Es gibt auch ein Skript in GitHub, mit dem Docker-Compose einfach ausgeführt werden kann.

Es wäre 2 oder 3 für den vollständigen Betrieb, aber ich ich betreibe die Servergruppe mit Docker-Compose, also habe ich versucht, Apicurio Studio auch mit Docker einzurichten. Überlegen. Darüber hinaus verlangt das oben erwähnte auf GitHub veröffentlichte Skript nicht nach der Flexibilität von DB und URL, sodass ich es selbst tun werde.

Die offizielle Dokumentation ist übrigens nicht sehr nett. Die Erklärung auf der Docker-Bildseite ist ebenfalls einfach, und ich habe viel ausprobiert. Ich denke, es ist okay, weil es jetzt funktioniert, aber ich würde es begrüßen, wenn Sie in den Kommentaren darauf hinweisen könnten, wenn etwas schief gelaufen ist.

die Architektur

Das Verständnis der Architektur ist für die Ausführung von Apicurio Studio unter Docker von entscheidender Bedeutung. Es hat eine Struktur, die nicht nur ein Dienst zu sein scheint, und besteht aus 4 Bildern.

Die Abbildung sagt Open Shift, aber es ist das gleiche mit Docker.

Notation in der Abbildung Bildname Rolle
Angular based UI application, Apicurio Studio UI Component apicurio-studio-ui Vorderes Ende
Apicurio Studio API Component apicurio-studio-api Backend
Apicurio Studio WebSocket Component apicurio-studio-ws WebSocket zur Synchronisation des Bearbeitungsbildschirms
KEYCLOAK apicurio-studio-auth Benutzerauthentifizierung

Es ist in Ordnung, dieser Konfiguration zu folgen. Die DB von apicurio-studio-auth ist auf H2 beschränkt, daher werde ich KEYCLOAK separat aus einem Bild erstellen. Daher werden wir diesmal die folgende Konfiguration vornehmen.

Bild Containername
postgres pg
nginx deploy
jboss/keycloak keycloak
apicurio/apicurio-studio-ui apicurio-ui
apicurio/apicurio-studio-api apicurio-api
apicurio/apicurio-studio-ws apicurio-ws

Die Domain ist example.com in diesem Artikel.

Docker-Compose-Einstellungen

Starten Sie den Container mit der folgenden Datei docker-compose.yml. Da beim Start eine DB-Initialisierung stattfindet, starten Sie zuerst pg, legen Sie es fest und starten Sie dann andere Container.

docker-compose.yml


version: '3'                                              
                                                          
services:
    pg:
        image: postgres
        restart: always
        environment:
            POSTGRES_USER: xxxx
            POSTGRES_PASSWORD: xxxxxx
        volumes:
Abkürzung

    deploy:                                               
        image: nginx                                      
        restart: always                                   
        ports:
            - 80:80
            - 443:443
        volumes:
Abkürzung

    keycloak:
        image: jboss/keycloak
        restart: always
        environment:
            DB_VENDOR: postgres
            DB_ADDR: pg
            DB_PORT: 5432
            DB_DATABASE: keycloak
            DB_USER: xxxx
            DB_PASSWORD: xxxxxx
            KEYCLOAK_USER: admin
            KEYCLOAK_PASSWORD: XXXXXX
        volumes:
Abkürzung

    apicurio-api:
        image: apicurio/apicurio-studio-api
        restart: always
        environment:
            APICURIO_KC_AUTH_URL: https://keycloak.example.com/auth/
            APICURIO_HUB_STORAGE_JDBC_TYPE: postgresql9
            APICURIO_DB_DRIVER_NAME: postgresql
            APICURIO_DB_CONNECTION_URL: jdbc:postgresql://pg:5432/apicurio
            APICURIO_DB_USER_NAME: xxxx
            APICURIO_DB_PASSWORD: xxxxxx
            APICURIO_DB_INITIALIZE: "true"
            APICURIO_HUB_STORAGE_JDBC_INIT: "true"
        depends_on:
            - pg
            - apicurio-ws

    apicurio-ws:
        image: apicurio/apicurio-studio-ws
        restart: always
        environment:
            APICURIO_KC_AUTH_URL: https://keycloak.example.com/auth/
            APICURIO_HUB_STORAGE_JDBC_TYPE: postgresql9
            APICURIO_DB_DRIVER_NAME: postgresql
            APICURIO_DB_CONNECTION_URL: jdbc:postgresql://pg:5432/apicurio
            APICURIO_DB_USER_NAME: xxxx
            APICURIO_DB_PASSWORD: xxxxxx
            APICURIO_DB_INITIALIZE: "true"
            APICURIO_HUB_STORAGE_JDBC_INIT: "true"
        depends_on:
            - pg

    apicurio-ui:
        image: apicurio/apicurio-studio-ui
        restart: always
        environment:
            APICURIO_KC_AUTH_URL: https://keycloak.example.com/auth/
            APICURIO_UI_HUB_API_URL: https://apicurio-api.example.com
            APICURIO_UI_EDITING_URL: wss://apicurio-ws.example.com
        depends_on:
            - pg
            - apicurio-api
            - apicurio-ws

postgreSQL-Einstellungen

Erstellen Sie eine Datenbank zur Verwendung mit Keycloak und Apicurio Studio.

Datenbank erstellen


create database keycloak;
create database apicurio;

Nginx-Einstellungen

Apicurio Studio greift also mit JavaScript auf API und WebSocket zu Alle Ports in mehreren Containern müssen an den Port des Hosts gebunden sein. Wenn Sie jedoch so viele Ports verwenden, ist es schwierig, die Portweiterleitung festzulegen, z. B. welche Nummer welche war. Dies geschieht über den Reverse-Proxy. Binden Sie nur 80 und 443 des Nginx-Containers an den Host, und die gesamte Webkommunikation erfolgt über Nginx.

Richten Sie einen Reverse-Proxy ein, damit Sie mit der in docker-compose.yml beschriebenen URL auf jeden von ihnen zugreifen können.

nginx_apicurio.conf


# keycloak
server {
    listen       443 ssl;
    listen [::]:443 ssl;
    server_name  keycloak.example.com;

    location / {
        include /etc/nginx/params/proxy_params;
        proxy_pass https://keycloak:8443;
    }
}

# ui
server {
    listen       443 ssl;
    listen [::]:443 ssl;
    server_name  apicurio.example.com;

    location / {
        include /etc/nginx/params/proxy_params;
        proxy_pass http://apicurio-ui:8080;
    }

    location /studio {
        return 301 https://$host;
    }
}

# api
server {
    listen       443 ssl;
    listen [::]:443 ssl;
    server_name  apicurio-api.example.com;

    location / {
        include /etc/nginx/params/proxy_params;
        proxy_pass http://apicurio-api:8080;
    }
}

# ws
server {
    listen       443 ssl;
    listen [::]:443 ssl;
    server_name  apicurio-ws.example.com;

    location / {
        include /etc/nginx/params/proxy_params;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_pass http://apicurio-ws:8080;
    }
}

Keycloak-Einstellungen

Keycloak ist ein OSS, das Single Sign-On bietet. Registrieren Sie die Bewerbung im Voraus Authentifizieren Sie Ihre Anmeldeinformationen, indem Sie von Ihrer Anwendung zu Keycloak und dann von Keycloak zu Ihrer Anwendung umleiten.

Um eine Anwendung bei Keycloak zu registrieren, müssen Sie so etwas wie ein Projekt namens Realm erstellen, eine Anwendung namens Client. Es gibt viele Einstellungselemente und es ist schwierig, also leihen wir uns die bereits festgelegten aus.

Exportieren Sie die Einstellungen von apicurio-studio-auth

Das obige Apicurio-Studio-Auth-Image enthält verschiedene vorkonfigurierte Keycloaks. Starten Sie den Container also mit dem Bild apicurio-studio-auth, exportieren Sie die Realm-Informationen von Apicurio und importieren Sie sie in den diesmal vorbereiteten Schlüsselumhang.

Starten Sie zuerst den Container. Ermöglicht es Ihnen, eine Verbindung zu Port 8080 herzustellen und die Anmeldeinformationen als Umgebungsvariable an den Verwaltungsbildschirm zu übergeben.

Container starten


docker run -it -p 8080:8080 \
-e "APICURIO_KEYCLOAK_USER=admin" \
-e "APICURIO_KEYCLOAK_PASSWORD=admin" \
-e "APICURIO_UI_URL=https://apicurio.example.com/" \
apicurio/apicurio-studio-auth

Greifen Sie nach dem Start mit Ihrem Browser auf "http: // localhost: 8080 / auth /" zu und melden Sie sich an. Melden Sie sich beim Starten mit dem obigen Befehl mit der ID: admin und dem Kennwort: admin an. Stellen Sie sicher, dass oben links Apicurio ausgewählt ist, und klicken Sie unten auf Exportieren. image.png

(Vorerst) Schalten Sie die beiden Elemente ein und drücken Sie Exportieren. Nach einer Weile steht die JSON-Datei zum Download zur Verfügung. image.png

Reich importieren

Importieren Sie den zuvor heruntergeladenen JSON in den diesmal vorbereiteten Schlüsselumhang. Sobald der Container aktiv ist, gehen Sie in Ihrem Browser zu "https: // keycloak.example.com / auth /" und melden Sie sich an.

Der Standardbereich "Master" sollte ausgewählt sein, importieren Sie also den JSON aus "Bereich hinzufügen".

Zum Anmelden einstellen

Bestimmt das Format der Anmeldeseite.

image.png

Einstellung abgeschlossen (sollte sein)

Wenn Sie auf "https: // apicurio.example.com" zugreifen, wird der Anmeldebildschirm angezeigt. image.png

Sie können sich anmelden, indem Sie sich als Benutzer registrieren. Versuchen Sie, die API hinzuzufügen und zu bearbeiten. Wenn dies funktioniert, ist sie erfolgreich. Wenn Sie einen Fehler machen, lassen Sie sich nicht entmutigen und spielen Sie damit herum. Ich denke, dass es gelöst werden kann, indem man sich die Browserkonsole und das Protokoll jedes Containers ansieht.

Wenn Sie einen Fehler machen, können Sie leicht von vorne beginnen. Mit Docker.

Recommended Posts

Gehostetes Apicurio Studio auf Docker
Freiheit auf Docker
Redmine auf Docker
Docker-Installation unter CentOS 6
Python-Memo auf Docker
Installieren Sie Docker auf Raspberry Pi
Installieren Sie Docker unter Windows 10 PRO
Installieren Sie Docker unter Ubuntu Server 20.04
Führen Sie openvpn unter Docker aus (Windows)
Probieren Sie Docker unter Windows 10 Home aus
Oracle Java 8 unter Docker Ubuntu
Installieren Sie Docker auf AWS EC2
Führen Sie das SSE-Beispiel (Server-Sent-Event) auf Docker aus
Schritte zum Ausführen von Docker auf einem Mac
Führen Sie Puppeteer-Core auf Heroku aus (Docker Edition)
Probieren Sie Redmine auf dem Mac Docker aus
Verwenden Sie Docker Compose unter Windows 10 Home
Führen Sie die AWS CLI in Docker aus
WordPress mit Docker Compose unter CentOS 8
Erstellen Sie Clang x VSCode auf Docker (1)
Konstruktionsverfahren für Rails on Docker-Umgebungen
Führen Sie PureScript auf einem Docker-Container aus
Probieren Sie Docker unter Windows Home aus (September 2020)
Stellen Sie Rails on Docker für Heroku bereit
Verwenden von Docker mit Windows10 Home WSL2
Verwenden Sie Docker CE (Official) mit CentOS 8
Erstellen Sie eine Unity-Entwicklungsumgebung auf Docker
Probieren Sie einfach C # 9 (.NET 5) in Docker aus