🦔
[Docker]Flaskのサーバーにローカル接続できないとき
はじめに
ネットワーク周りの理解が浅いなぁ…と実感しました
動作環境
- Docker
24.0.7
- Pythonイメージ
python:3.9-slim
- Flask
2.3.3
手順
以下のPythonコードを実行したいとき
from flask import Flask
app=Flask(__app__)
@app.route('/')
def hello():
return ("<p>hello, world!<p>")
docker-compose.yml
version: '3'
services:
server:
build: app/
ports:
- "5000:5000"
volumes:
- ./app:/app
うまくいかない例
dockerfile
EXPOSE 5000
CMD flask run --port=5000
この場合、コンテナ内の5000番に、ホストマシンとは異なるマシンとしてサーバーが立っており、違うマシンからアクセスするとエラーを吐かれてしまう。
うまくいかせる
dockerfile
EXPOSE 5000
CMD flask run --port=5000 --host==0.0.0.0
--host==0.0.0.0
オプションを付けることで、どのマシンからのアクセスでも許可するので、ローカルから参照できる
おまけ (おすすめオプション)
dockerfile
EXPOSE 5000
CMD flask run —port=5005 —host=0.0.0.0 —debugger --reload
-
--debugger
: サーバー側でエラーとかのログを出してくれる -
--reload
: ホットリロードの有効化
Discussion