python - 构建 Python Flask 应用程序的 Docker 映像显示空白 REST 端点路由
问题描述
我正在使用 docker 构建一个烧瓶 restful 项目,但是当我运行 docker 时,暴露的URL显示一个空白页面。
我是 docker 新手,需要一些指导。
我怀疑 Dockerfile 没有很好地指向app.py
最终运行该项目的那个。以下是我的项目结构:
project/
app/
movie/
movies.py
utils/
tasks.py
app.py
requirements.txt
这就是我的app.py
文件的样子:
from app import app
@app.route('/', methods=['GET'])
def index():
return 'Hello World'
if __name__ == '__main__':
app.run(port=5000, debug=True)
然后,这是我的Dockefile
:
FROM alpine:latest
MAINTAINER huxyy
RUN apk add --no-cache python3-dev \
&& pip3 install --upgrade pip
WORKDIR /app
COPY . /app
RUN pip3 --no-cache-dir install -r requirements.txt
EXPOSE 5000
#ENTRYPOINT ["python3"]
#
#CMD ["app.py"]
# Run app.py when the container launches
COPY app.py /app
CMD python3 app.py
所以我首先运行了构建命令:
docker build -t flaskapp:latest .
然后在我运行图像之后:
docker run -it flaskapp
所以,我不知道出了什么问题,但我需要一些指导
解决方案
我想问题是您尝试访问应用程序的端口 5000 尽管EXPOSE
在 Dockerfile 中使用,但实际上并未发布。
EXPOSE 指令实际上并不发布端口。它充当构建映像的人和运行容器的人之间的一种文档类型,关于打算发布哪些端口。要在运行容器时实际发布端口,请在 docker run 上使用 -p 标志来发布和映射一个或多个端口,或者使用 -P 标志来发布所有暴露的端口并将它们映射到高阶端口。
https://docs.docker.com/engine/reference/builder/#expose
尝试使用-p
标志运行容器以发布所需的端口映射,例如:
docker run -it -p 5000:5000 flaskapp
推荐阅读
- gradle - gradle - 列出“项目”的多个子项目
- c++ - 在类中存储固定的已知数据(c++)
- python - 如何使用不可停止的循环修复此代码?
- python - 从字典列表 A 中为字典列表 B 中不存在的每个字典创建字典列表
- python - 如何在 Keras 上使用 Glorot 重新初始化预训练模型的权重?
- pandas - Pandas:当某些分钟大于 60 时,如何将一列以分钟为单位的持续时间:秒转换为日期时间?
- windows - PyQt5 在标签中显示动画 gif
- reactjs - 在倒数计时器中动态更新道具时遇到问题 - 使用反应钩子创建
- c# - PowerShell Types.ps1xml 导入模块时找不到类型
- sql - 在分层查询中用父数据覆盖空值