Utilisez-vous Apicurio Studio? J'ai commencé à l'utiliser l'autre jour. Je ne suis pas encore sûr.
Je l'ai hébergé sur Docker La route était plus raide que je ne l'avais imaginé, je vais donc la laisser à ceux qui suivent.
Apicurio Studio est l'un des Apicurio Project. Outil de conception OSS Open API. Swagger est célèbre en tant qu'outil OpenAPI. Si vous souhaitez travailler avec plusieurs personnes, vous devez utiliser le Forfait payant. Il semble qu'il existe des outils autres que Swagger, mais ils sont assez payés (pour plus de détails, ici). Si c'est pour les affaires, je veux quand même éviter de dépenser en développement de passe-temps.
Là, j'ai découvert Apicurio Studio d'OSS. Non seulement c'est gratuit, mais il est également intéressant de pouvoir concevoir avec des opérations basées sur l'interface graphique sur le Web. Il n'y a pas encore de fonctionnalités telles que la moquerie et les tests, et il semble qu'elles seront ajoutées à une date ultérieure, mais je pense que cela vaut la peine d'essayer si c'est gratuit. Activity est bâclé.
Il existe trois façons d'utiliser Apicurio Studio:
Je pense que "Quick Start" avec un script qui peut être utilisé immédiatement après le téléchargement est facile pour 2. 3 Il existe également un script dans GitHub qui facilite l'exécution de docker-compose.
Ce serait 2 ou 3 pour un fonctionnement à grande échelle, mais je j'utilise le groupe de serveurs avec docker-compose, j'ai donc essayé de configurer Apicurio Studio avec Docker également. pense. De plus, le script publié sur GitHub mentionné ci-dessus ne demande pas la flexibilité de DB et d'URL, donc je le ferai moi-même.
À propos, la documentation officielle n'est pas très gentille. L'explication sur la page d'image Docker est également simple, et j'ai fait beaucoup d'essais et d'erreurs. Je pense que ça va parce que ça marche maintenant, mais je vous serais reconnaissant si vous pouviez indiquer dans les commentaires si quelque chose ne va pas.
La compréhension de l'architecture est essentielle pour exécuter Apicurio Studio sur Docker. Il a une structure qui ne semble pas être un service unique et se compose de 4 images.
La figure indique Open Shift, mais c'est la même chose avec Docker.
Notation sur la figure | Nom de l'image | rôle |
---|---|---|
Angular based UI application, Apicurio Studio UI Component | apicurio-studio-ui | l'extrémité avant |
Apicurio Studio API Component | apicurio-studio-api | Back end |
Apicurio Studio WebSocket Component | apicurio-studio-ws | WebSocket pour la synchronisation de l'écran d'édition |
KEYCLOAK | apicurio-studio-auth | Authentification d'utilisateur |
Il est normal de suivre cette configuration, Le apicurio-studio-auth est limité à H2 dans DB, donc je vais créer KEYCLOAK à partir d'une image séparément. Par conséquent, cette fois, nous allons faire la configuration suivante.
image | Nom du conteneur |
---|---|
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 |
Le domaine est example.com dans cet article.
Démarrez le conteneur avec le fichier docker-compose.yml suivant. Comme il y a une initialisation de la base de données au démarrage, démarrez d'abord pg, définissez-le, puis démarrez d'autres conteneurs.
docker-compose.yml
version: '3'
services:
pg:
image: postgres
restart: always
environment:
POSTGRES_USER: xxxx
POSTGRES_PASSWORD: xxxxxx
volumes:
Abréviation
deploy:
image: nginx
restart: always
ports:
- 80:80
- 443:443
volumes:
Abréviation
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:
Abréviation
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
Créez une base de données à utiliser avec keycloak et Apicurio Studio.
Créer une base de données
create database keycloak;
create database apicurio;
Apicurio Studio accède à l'API et à WebSocket avec JavaScript, Tous les ports de plusieurs conteneurs doivent être liés au port de l'hôte. Mais si vous utilisez autant de ports, il est difficile de définir la redirection de port, par exemple quel numéro était quoi. Cela se produit à travers le proxy inverse. Liez uniquement 80 et 443 du conteneur nginx à l'hôte et toutes les communications Web passent par nginx.
Configurez un proxy inverse afin de pouvoir accéder à chacun d'eux avec l'URL décrite dans docker-compose.yml.
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 est un OSS qui fournit une authentification unique. Enregistrez l'application à l'avance Authentifiez vos informations de connexion en redirigeant de votre application vers Keycloak puis en redirigeant de Keycloak vers votre application.
Pour enregistrer une application avec Keycloak, vous devez créer quelque chose comme un projet appelé realm, une application appelée client. Il existe de nombreux éléments de réglage et c'est difficile, alors empruntons ceux qui ont déjà été définis.
L'image apicurio-studio-auth ci-dessus a plusieurs Keycloaks préconfigurés. Alors, démarrez le conteneur avec l'image apicurio-studio-auth, exportez les informations de domaine d'Apicurio et importez-les dans le Keycloak préparé cette fois.
Commencez par démarrer le conteneur. Vous permet de vous connecter au port 8080 et de transmettre les informations de connexion à l'écran de gestion en tant que variable d'environnement.
Démarrer le conteneur
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
Une fois démarré, accédez à http: // localhost: 8080 / auth /
avec votre navigateur et connectez-vous.
Une fois démarré avec la commande ci-dessus, connectez-vous avec l'ID: admin et le mot de passe: admin.
Assurez-vous qu'Apicurio est sélectionné en haut à gauche et cliquez sur Exporter en bas.
(Pour le moment) Activez les deux éléments et appuyez sur Exporter. Après un certain temps, le fichier json sera disponible au téléchargement.
Importez le fichier json que vous avez téléchargé précédemment dans le Keycloak préparé cette fois.
Une fois le conteneur en place, accédez à https: // keycloak.example.com / auth /
dans votre navigateur et connectez-vous.
Le royaume par défaut "Master" doit être sélectionné, alors importez le json depuis "Add realm".
Détermine le format de la page de connexion.
Lorsque vous accédez à https: // apicurio.example.com
, vous verrez l'écran de connexion.
Vous pouvez vous connecter en vous inscrivant en tant qu'utilisateur. Essayez d'ajouter et de modifier l'API, et si cela fonctionne, cela réussira. Si vous faites une erreur, ne vous découragez pas et jouez avec. Je pense que cela peut être résolu en regardant la console du navigateur et le journal de chaque conteneur.
Si vous faites une erreur, vous pouvez facilement recommencer. Avec Docker.
Recommended Posts