[英]Can't access flask site outside Docker container
我正在運行 Linux Mint 和 Python 3.6。
我已經閱讀了這里的每個鏈接,但無法弄清楚哪里出了問題。 我正在運行一個簡單的 flask 應用程序,當我在我的機器上本地運行它時它工作正常,但是然后使用 Docker 運行它我無法在我的瀏覽器中訪問 IP。
我已將 flask 應用程序設置為在主機0.0.0.0
上運行,使用app.run(host='0.0.0.0')
。
FROM python:3.7
RUN mkdir -p /var/app
WORKDIR /var/app
COPY . /var/app
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["pytest", "-v", "tests/test_flask_api.py"]
# CMD ["python3", "app.py"]
CMD ["python3", "-m", "Flask", "run", "--host=0.0.0.0"]
web:
build: ./app
ports:
- "5000:5000"
volumes:
- .:/code
在運行命令docker-compose up -d
構建並運行容器后,我運行命令docker inspect --format '{{.NetworkSettings.IPAddress }}'
以獲取容器的 IP 地址172.17.0.2
。
我嘗試通過172.17.0.2:5000
和localhost:5000
訪問該站點,但兩者都只是掛起而不加載。
最后,我運行docker exec -it restapimma_web_1 /bin/bash
進入容器。 然后我運行curl localhost:5000
並能夠得到正確的響應。 所以 flask 應用程序在容器內運行,我無法在容器外訪問它。
我有一個類似的問題。 讓它工作:
if __name__ == "__main__":
app.run(
host=os.environ.get("BACKEND_HOST", "172.0.0.1"),
port=your_port,
debug=True,
)
services:
[your service name]:
image:[your image]
environment:
- BACKEND_HOST=[your service name]
ports:
- "[etc]"
基本上 flask 想要使用正確的主機名來調用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.