docker-compose.yml
の内容を提示してください
複数のDockerコンテナ間の通信について
解決したいこと
ここに解決したい内容を記載してください。
pythonとnginxのDockerコンテナを作成し、それぞれの通信が通っているかを
テストしたいところなかなかうまくいきません。
確認したところflaskの内容を以下のようにしました
from flask import Flask
from flask import render_template
app = Flask(name)
@app.route('/')
def index():
return render_template('index.html')
if name == 'main':
app.run(host='0.0.0.0', port=8000)
nginxのdefault.confの中身に以下の内容を追加しました。
location / {
proxy_pass http://python3:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
}
ポートの設定も問題なさそうですが一体どこに問題があるでしょうか。
分かる方は教えて頂けたら幸いです。
何卒よろしくお願いいたします。
1Answer
Comments
ip addr で実ipを調べて
if name == 'main': app.run(host='10.20.30.40', port=8000)
location / { proxy_pass http://10.20.30.40:8000;
でしょうか?
コンテナ内外で
wget -SO- http://10.20.30.40:8000/
| od -c
で確認しましょう!おそらく、NGでは! networks:を確認しましたか?
nginx はコンテナ外に、flaskはコンテナ内に配置しましょう?
docker-compose.yml に次の指定をしては?
neyworks: host@jyoten
Questionerご返事頂きありがとうございます。
初心者なので自分も色々調べてみました。
ymlファイルはこんな感じです。
再度勉強し直したところいくつか問題があるみたいです。
上記のコメントを踏まえて再度試してみたいと思います。
もしご指摘があれば教えて頂けたら幸いです。
よろしくお願いいたします。version: '3'
services:
python3:
restart: always
build: .
container_name: 'python3'
tty: true
expose:
- 8000
environment:
- DATABASE_URL=mysql+pymysql://root:123@db:3306/test-db
volumes:
- ./src:/root/src
- ./templates:/tmpnginx:
image: 'nginx:latest'
container_name: 'my-nginx'
ports:
- "80:80"
depends_on:
- python3db:
image: 'mysql:latest'
ports:
- '3306:3306'
container_name: 'my-db'
environment:
MYSQL_ROOT_PASSWORD: '123'
MYSQL_DATABASE: 'test-db'
volumes:
- mysql_data:/var/lib/mysqlvolumes:
html_data:
mysql_data:@jyoten
Questioner改めまして、ご回答ありがとうございました。
いろいろと参考にさせていただきました。ありがとうございます。
無事nginxを通してpythonアプリを表示させることができました。
やはりコンテナ間のネットワークの部分に問題がありました。