Hébergé Apicurio Studio sur Docker

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.

Qu'est-ce qu'Apicurio Studio?

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é.

Méthode d'opération

Il existe trois façons d'utiliser Apicurio Studio:

  1. Utilisez la version Live officiellement distribuée comme version d'essai
  2. Hôte sur une machine locale
  3. Héberger avec Docker

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.

architecture

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.

paramètres de composition du menu fixe

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

paramètres postgreSQL

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;

paramètres nginx

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;
    }
}

Paramètres de Keycloak

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.

Exporter les paramètres depuis apicurio-studio-auth

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. image.png

(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. image.png

royaume d'importation

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".

Configurer pour se connecter

Détermine le format de la page de connexion.

image.png

Réglage terminé (devrait être)

Lorsque vous accédez à https: // apicurio.example.com, vous verrez l'écran de connexion. image.png

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

Hébergé Apicurio Studio sur Docker
Liberty sur Docker
Redmine sur Docker
Installation de Docker sur CentOS 6
mémo python sur docker
Installez Docker sur Raspberry Pi
Installez Docker sur Windows 10 PRO
Installez Docker sur Ubuntu Server 20.04
Exécutez openvpn sur Docker (Windows)
Essayez Docker sur Windows 10 Famille
Oracle Java 8 sur Docker Ubuntu
Installer docker sur AWS EC2
Exécutez l'exemple SSE (Server-Sent-Event) sur le docker
Étapes pour exécuter Docker sur Mac
Exécutez puppeteer-core sur Heroku (édition Docker)
Essayez Redmine sur le docker Mac
Utiliser Docker Compose sur Windows 10 Famille
Exécutez l'AWS CLI sur Docker
WordPress avec Docker Compose sur CentOS 8
Construire Clang x VSCode sur Docker (1)
Rails sur la procédure de construction de l'environnement Docker
Exécuter PureScript sur un conteneur Docker
Essayez Docker sur Windows Home (septembre 2020)
Déployer des rails sur Docker vers heroku
Utilisation de Docker avec Windows10 Home WSL2
Utiliser Docker CE (officiel) avec CentOS 8
Créer un environnement de développement Unity sur docker
Essayez facilement C # 9 (.NET 5) sur Docker