目次
- 最初に
- この記事をおすすめする人
- きっかけ
- 実装編
- 同期のスピードはどれくらい?
- 最後に
1. 最初に
コンテナ間通信で詰まった人、詰まっている人いませんか...?
コンテナ間の通信は様々なやり方があると思います。
私はコンテナ間のデータのやり取りで詰まって、困った際に閃いた案を記事に残そうと思いました。
2. この記事をおすすめする人
- コンテナ間通信で詰まっている人
- 出来るだけ早くコンテナ間でデータを共有したい人
- コンテナのvolumesの使い方を学び直したい人
3. きっかけ
当方は、通信コンテナとwebコンテナを立ち上げ、通信コンテナが取得したデータをwebコンテナでweb上に表示するという実装を行なっておりました。
そこで、ソケット通信を試しましたが上手くいかず...
その時の構成図を以下に示します。
時間的制約があったので、違う方法を試しました。
共通ボリュームを両コンテナにマウントすることで、コンテナ間通信をせずに値の受け渡しを実現します。
パッて聞くと、当たり前じゃん、、、って思うと思いますが、実はやってる人そんなにいないんですよ...
4. 実装編
構成図を以下に示します。(flaskのhtmlやcssは省略してます)
.
├── communication_containar
│ ├── Dockerfile
│ └── src
│ └── insert.py
|── web_containar
| ├── Dockerfile
| └── src
| └── app.py
|
├── docker-compose.yml
|── text
└── test.txt
docker-compose.ymlは簡単で、ただ共通のファイルをマウントするだけです。
docker-compose.yml
version: '3.8'
services:
web:
build: ./web
volumes:
- "dockertest/text:/home/text"
tty: true
havedate:
build: ./web
volumes:
- "./text:/home/text"
tty: true
5. 同期のスピードはどれくらい?
同じファイルをマウントして、同期遅かったら意味ないですよね...
いざ検証!
- catでtest.txtの中身を見る → 中身はない
- ただtest.txtにhello worldを書き込むpythonファイルを実行する
- catでtest.txtの中身見る → 中身にhello worldが確認できる
これらを1秒以内にやりましたが、正しく同期されていました
6. 最後に
いかがでしたでしょうか?
あくまで、個人での開発で使うようにしましょうね...
今度はコンテナ間通信にリベンジします!!!!