前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >flask服务打包成docker容器并运行

flask服务打包成docker容器并运行

原创
作者头像
shigen
发布2023-12-30 17:50:45
1590
发布2023-12-30 17:50:45
举报

shigen坚持更新文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。

Hello,伙伴们,最近遇到恶一个离谱的事情:我的file-server项目在我的mac上运行很正常,在我的windows电脑上就出现各种错误,尝试了好几次,甚至改了flask的版本,更新了flask版本,最后都无济于事。真让人头大啊。

思考再三,还是用docker吧,把服务打包成docker,然后docker运行,总不会出问题吧。

python+docker
python+docker

说干就干,先分析我需要打包进容器的都有哪些内容:

项目结构
项目结构

发现需要的就是这些文件和文件夹:

文件/文件夹

描述

requirements.txt

需要的pip依赖文件

app.py

python的主要程序代码

templates/

静态资源文件夹

OK,说干就干。肯定是需要Dokcerfile文件的:

代码语言:dockerfile
复制
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容器中运行服务。以下是相关命令:

代码语言:shell
复制
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的镜像加速。

可以先提前单独下载好需要用到的基础镜像:

代码语言:shell
复制
docker pull python:3.9

其实也捎带繁琐,shigen有空的时候也会把这些写成一个脚本,直接执行生成容器跑起来呢。

最后,还是想推广一下shigen的开源项目:

🧑‍💻file-server介绍

一款开源的局域网文件传输共享工具,如果使用的是移动设备,直接扫描终端中的二维码或者浏览器页面上的二维码即可上传文件。

上传完毕之后的文件将会以列表的形式展示文件的具体信息:如文件名、大小、权限、修改时间等信息,单击【下载】按钮即可下载文件到设备中。

具体的使用可参考 shigen 的文章:开源一个局域网文件共享工具

迄今为止,它已经更新到了v1.0.1啦,期待伙伴们的支持和参与。

更新的release版本
更新的release版本

以上就是今天分享的全部内容了,觉得不错的话,记得点赞 在看 关注支持一下哈,您的鼓励和支持将是shigen坚持日更的动力。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Dockerfile
  • 🧑‍💻file-server介绍
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档