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.
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.
Es gibt drei Möglichkeiten, Apicurio Studio zu verwenden:
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.
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.
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
Erstellen Sie eine Datenbank zur Verwendung mit Keycloak und Apicurio Studio.
Datenbank erstellen
create database keycloak;
create database apicurio;
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 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.
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.
(Vorerst) Schalten Sie die beiden Elemente ein und drücken Sie Exportieren. Nach einer Weile steht die JSON-Datei zum Download zur Verfügung.
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".
Bestimmt das Format der Anmeldeseite.
Wenn Sie auf "https: // apicurio.example.com" zugreifen, wird der Anmeldebildschirm angezeigt.
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