9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ローカルに立てた複数のdocker-compose上のRailsでAPIを叩きたい

Posted at

完成イメージ図

image.png

前提

docker-composeで別々のRails Appを立ち上げておいてください。
こちらではdocker-composeでの設定のみ書きます。
※ ネットワーク等の設定値は参照先にある記事を参考にしています
※ DB = MySQL

したいこと

ローカルで別々のdocker-composeで立ち上げたRails App間でAPI通信がしたい。
e.g. イメージ図のRails App2のAPIをRails App1から叩きたい

何もしない状態で通信してみた時のエラー

キーワードからこのメモにたどり着けるように残しておきます。

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

概要

  1. 共通ネットワーク作成
  2. それぞれのdocker-compose.ymlのservicesに共通ネットワーク設定
  3. リクエストが届くか確認
  4. 完成

手順

  • docker network create --driver bridge common_link (共通ネットワーク作成)
  • docker network ls (作成したネットワーク確認)
  • Rails App1とRails App2のdocker-compose.ymlのservicesの階層に networks: を定義

docker-compose.yml

services:
.
.
networks:
  common_link:
    external: true
  • Rails App1, DB1, Rails App2, DB2それぞれのコンテナ設定箇所で networks を定義
services:
  rails_app1:
    networks:
      - common_link
  db1:
    networks:
      - common_link
  • docker-compose2のMySQLのポートを3306と被らないようにするためにdocker-compose.ymlの修正
services:
  db2:
    ports:
      - "127.0.0.1:3307:3307"
  • docker-compose2のRails App2でMySQLをバインドする設定があるなら同じくポート値を変更
services:
  rails_app2:
    environment:
      DATABASE_URL: mysql2://root:root@mysql:3307
  • docker-compose2のMySQLのconfigにポート指定
    e.g. /Dockerfiles/mysql/conf.d/mysql.cnf
[client]
port=3307
[mysqld]
port=3307
  • docker-compose1とdocker-compose2の両方起動
  • docker network inspect common_link (Rails App1, DB1, Rails App2, DB2の計4つのコンテナが同じネットワークに属している確認)

e.g. Containers のところ
image (8) (1).png

  • 問題なさそうならping, curl, API叩いたりしてみてください

    1. docker-compose exec rails_app1 bash
    2. ping 172.19.0.5 # 上の仮画像で確認したIP(172.19.0.5)を仮にrails_app2とした場合
    3. curl 172.19.0.5
  • 完成です。お疲れ様でした。

他に良い設定あったら教えてください。

参照先

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?