2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

docker-composeで建てたコンテナ間の通信方法

Posted at

はじめに

個人開発でDockerとdocker-composeを使って構築しようとした際、フロントエンドとバックエンドをそれぞれのコンテナで立ち上げたとき、コンテナ間で通信をする方法がすぐにわからなかったので、その方法について共有させて頂きます🙏

今回はコンテナ間の通信のみ説明をします。Dockerやdocker-composeの詳細な使用方法については説明しません。あらかじめご了承ください。

方法

とてもシンプルで、docker-conmpose.yml で作成したサービス名と、使用したいポートを指定するだけで可能です。
今回はNode.js上でサーバーを動かすことができるライブラリExpress.jsを使用し、expresswebというサービス名でコンテナを構築しようと思います。

docker-compose.yml
services:
    express:
        build: ./express
    # ...以下省略...
    web:
        build: ./web

expressの方では、Express.js公式サイトHello Worldの例を使用します。

app.js
const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

その後、docker-compose up等でコンテナを起動し、webコンテナのターミナルでcurl express:3000と入力すると、Example app listening on port 3000が返ってくると思います!

最後に

ネットで調べてみると、docker-compose.yamlnetworksというのを定義する必要があるとか、必要ないとか、なかなか思うように辿り着かなかったですが、私がインターンさせて頂いている会社の中で、コンテナ間の通信をこのように行っていたので、とても衝撃を受けました。

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?