flask服务如何打包成docker镜像
shigen
坚持更新文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。
Hello,伙伴们,最近遇到恶一个离谱的事情:我的file-server项目在我的mac上运行很正常,在我的windows电脑上就出现各种错误,尝试了好几次,甚至改了flask的版本,更新了flask版本,最后都无济于事。真让人头大啊。
思考再三,还是用docker吧,把服务打包成docker,然后docker运行,总不会出问题吧。
说干就干,先分析我需要打包进容器的都有哪些内容:
发现需要的就是这些文件和文件夹:
文件/文件夹 | 描述 |
---|---|
requirements.txt | 需要的pip依赖文件 |
app.py | python的主要程序代码 |
templates/ | 静态资源文件夹 |
OK,说干就干。肯定是需要Dokcerfile文件的:
FROM python:3.9
# 设置 pip 镜像源为阿里云镜像
ENV PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/
# 设置镜像源不验证 SSL
ENV PIP_TRUSTED_HOST=mirrors.aliyun.com
RUN mkdir /app
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
# 复制整个应用程序到 app 目录中
COPY app.py /app/
COPY templates/ /app/templates/
# 设置 Flask 环境变量
ENV FLASK_APP=app.py
EXPOSE 9000
# 启动 Flask 应用
CMD ["python", "app.py", "--host=0.0.0.0"]
注意:这里建议配置pip的镜像加速,不然下载pip包的时候会很慢。
剩下的过程就是靠我们自己打包指令了,可以参考我的README.md文件。
Dockerfile
shigen
一直用的是mac,所以没有发现问题。最后移植到了windows平台,发现运行项目,flask都有问题。于是新增了Dockerfile,直接在docker容器中运行服务。以下是相关命令:
docker build -t file-server:1.0.0 .
docker run -d -p 9000:9000 --name file-server -v $(pwd)/file:/app/upload file-server:1.0.0
docker初次构建的时间可能会很长,因为python官方的docker镜像大约在1GB左右。大部分的时间都在拉取镜像,建议配置docker的镜像加速。
可以先提前单独下载好需要用到的基础镜像:
docker pull python:3.9
其实也捎带繁琐,shigen
有空的时候也会把这些写成一个脚本,直接执行生成容器跑起来呢。
最后,还是想推广一下shigen
的开源项目:
🧑?💻file-server介绍
一款开源的局域网文件传输共享工具,如果使用的是移动设备,直接扫描终端中的二维码或者浏览器页面上的二维码即可上传文件。
上传完毕之后的文件将会以列表的形式展示文件的具体信息:如文件名、大小、权限、修改时间等信息,单击【下载】按钮即可下载文件到设备中。
具体的使用可参考 shigen
的文章:开源一个局域网文件共享工具
迄今为止,它已经更新到了v1.0.1
啦,期待伙伴们的支持和参与。
以上就是今天分享的全部内容了,觉得不错的话,记得点赞 在看 关注
支持一下哈,您的鼓励和支持将是shigen
坚持日更的动力。同时,shigen
在多个平台都有文章的同步,也可以同步的浏览和订阅:
平台 | 账号 | 链接 |
---|---|---|
CSDN | shigen01 | shigen的CSDN主页 |
知乎 | gen-2019 | shigen的知乎主页 |
掘金 | shigen01 | shigen的掘金主页 |
腾讯云开发者社区 | shigen | shigen的腾讯云开发者社区主页 |
微信公众平台 | shigen | 公众号名:shigen |
与shigen
一起,每天不一样!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!