Je veux accéder à l'API avec Rails sur plusieurs docker-composes configurés localement

Diagramme d'image d'achèvement

image.png

supposition

Lancez une application Rails distincte avec docker-compose. Ici, seuls les paramètres de docker-compose sont écrits.

Que veux-tu faire

Je souhaite effectuer une communication API entre les applications Rails lancées localement avec différents docker-composes. Par exemple, je veux accéder à l'API Rails App2 du diagramme d'image de Rails App1

Erreur lors de la tentative de communication sans rien faire

Je vais le laisser pour que vous puissiez accéder à ce mémo à partir des mots-clés.

Errno::ECONNREFUSED: Connection refused - connect(2)

Aperçu

  1. Créez un réseau commun
  2. Paramètres réseau communs pour les services dans chaque docker-compose.yml
  3. Vérifiez si la demande arrive
  4. Achèvement

procédure

--docker network create --driver bridge common_link --docker network ls (confirmez le réseau créé) --Définir réseaux: dans la hiérarchie des services de docker-compose.yml pour Rails App1 et Rails App2

docker-compose.yml

services:
.
.
networks:
  common_link:
    external: true

--Définissez les réseaux dans chaque paramètre de conteneur de Rails App1, DB1, Rails App2, DB2

services:
  rails_app1:
    networks:
      - common_link
  db1:
    networks:
      - common_link

--Modifié docker-compose.yml pour éviter de chevaucher le port MySQL de docker-compose2 avec 3306

services:
  db2:
    ports:
      - "127.0.0.1:3307:3307"
services:
  rails_app2:
    environment:
      DATABASE_URL: mysql2://root:root@mysql:3307

--Spécifier le port dans la configuration MySQL de docker-compose2 e.g. /Dockerfiles/mysql/conf.d/mysql.cnf

[client]
port=3307
[mysqld]
port=3307

--Démarrez à la fois docker-compose1 et docker-compose2 --docker network inspect common_link (Confirmation qu'un total de 4 conteneurs, Rails App1, DB1, Rails App2, DB2, appartiennent au même réseau)

par exemple "Conteneurs" image (8) (1).png

  1. docker-compose exec rails_app1 bash
  2. ping 172.19.0.5 # Si l'adresse IP (172.19.0.5) confirmée dans l'image temporaire ci-dessus est définie sur rails_app2
  3. curl 172.19.0.5

Veuillez me faire savoir s'il existe d'autres bons paramètres.

Référence

https://qiita.com/reneice/items/20e981062b093264cd0a

Recommended Posts

Je veux accéder à l'API avec Rails sur plusieurs docker-composes configurés localement
Implémentation d'une API forte pour "Je veux afficher ~~ à l'écran" avec un simple CQRS
Je souhaite ajouter une fonction de navigation avec ruby on rails
Je veux introduire un comité avec des rails sans devenir trop sale
Je veux jouer avec Firestore de Rails
[Rails] Je veux charger du CSS avec webpacker
Je souhaite télécharger un fichier sur Internet en utilisant Ruby et l'enregistrer localement (avec prudence)
Je souhaite utiliser le mode sombre avec l'application SWT
Je souhaite authentifier les utilisateurs auprès de Rails avec Devise + OmniAuth
Je souhaite simplifier la sortie du journal sur Android
[Rails] [bootstrap] Je souhaite modifier la taille de la police de manière réactive
Je veux pousser une application créée avec Rails 6 vers GitHub
Je souhaite créer un formulaire pour sélectionner la catégorie [Rails]
Ce à quoi j'étais accro avec l'API REST Redmine
Je veux mettre le JDK sur mon PC Mac
Je souhaite renvoyer plusieurs valeurs de retour pour l'argument saisi
Je veux passer la commande de démarrage à postgres avec docker-compose.
Après avoir publié un article avec Rails Simple Calendar, je souhaite le refléter dans le calendrier.
Je veux revenir à l'écran précédent avec kotlin et java!
J'ai essayé d'implémenter la fonction de prévisualisation d'image avec Rails / jQuery
Je veux ajouter l'option désactivée à f.radio_button en fonction de la condition
[Java] Je veux effectuer distinctement avec la clé dans l'objet
[Rails] Je souhaite ajouter des données aux paramètres lors de la transition avec link_to
Mode API Rails J'ai essayé d'implémenter la fonction de recherche multiple par mot-clé à l'aide de tableaux et d'un traitement itératif.
Mémorandum: Ce à quoi j'étais accro quand j'ai frappé l'API de comptabilité freee
Je souhaite sélectionner plusieurs éléments avec une disposition personnalisée dans la boîte de dialogue
Étapes minimales pour configurer un environnement Ruby avec rbenv sur Ubuntu 20.04
Je ne peux pas construire si je définis la destination de construction sur un simulateur avec XCode12!
Je souhaite utiliser DBViewer avec Eclipse 2018-12! !!
Je souhaite installer PHP 7.2 sur Ubuntu 20.04.
J'ai essayé de résumer l'API Stream
Configurer le registre Docker localement sur CentOS 7
[Rails / ActiveRecord] Je souhaite valider la valeur avant la conversion du type (_before_type_cast)
Je souhaite pouvoir lire des fichiers en utilisant refile avec administrate [rails6]
[Rails] Comment enregistrer plusieurs enregistrements dans la table intermédiaire avec une association plusieurs-à-plusieurs
Mémo de développement ~ Je souhaite afficher uniquement la première image publiée plusieurs fois ~
Rails6 Je veux créer un tableau de valeurs avec une case à cocher
[Eclipse] Je veux utiliser la fonction de complétion, mais je veux réussir à confirmer la complétion avec un espace
[Rails] Je veux tester avec RSpec. Nous soutenons votre démarche [Procédure d'introduction]
Affectation à plusieurs variables avec l'opérateur ternaire
J'ai essayé d'organiser la session en Rails
Publiez l'application avec ruby on rails
Je veux utiliser java8 forEach avec index
Je veux var_dump le contenu de l'intention