Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >flask服务打包成docker容器并运行

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

原创
作者头像
shigen
发布于 2023-12-30 09:50:45
发布于 2023-12-30 09:50:45
3660
举报

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
AI代码解释
复制
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
AI代码解释
复制
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
AI代码解释
复制
docker pull python:3.9

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

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

🧑‍💻file-server介绍

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

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

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

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

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

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

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
实战 | ​Docker ubuntu:18.04 镜像制作
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。近年来,Docker方式越来越受欢迎,本文针对Docker ubuntu的镜像操作进行了详细阐述:包括两种方式。
3D视觉工坊
2020/12/11
6K0
🐳 从 Flask 项目打包为多平台 Docker 镜像并上传 Docker Hub(含 GitHub Actions)
用户3347017
2025/03/27
1670
基于GitLabCI的Python交付流水线实现
首先,我们需要在github中找一个Python项目,如果具有编码能力也可以写一个简单web app。以下项目是一个Flask项目,简单的web应用。这个项目之前使用的是Jenkins完成的持续交付,现在改造成GitlabCI完成。
DevOps云学堂
2020/06/15
1.2K0
【Docker】项目实战,部署自己的APP
有关 Dockerfile 的相关知识,我在后面的文章会进行讲解,今天主要是实际操作
机器视觉CV
2020/08/13
1K0
Flask Docker Hello Word
环境 Docker Flask 代码 新建 app.py 文件 From flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Flask Docker Hello Word' if __name__ == '__main__': app.run(debug=True,host='0.0.0.0') 新建 requirements.txt 文件 Flask==0.10.1 D
霡霂
2019/03/12
4610
Docker容器:“我竟可以是个饭盒?!”
假设程序员的工作是炒菜做米饭和甜点,那么image就是炒好的菜,container则是装饭菜的饭盒,Registry就是用来存放饭盒的冰箱,将打包好的饭盒传递给不同的人,这也就是K8S部署。假如docker有生命周期的话,那么image就是用来打包,container用来执行和启动的。
才浅Coding攻略
2022/12/12
3310
Docker容器:“我竟可以是个饭盒?!”
Docker介绍与使用
流程为:你可以通过Docker Client要求Docker daemon运行某一个image,daemon就会在系统查找这个image,如果找到了就 run the container forked from that image,否则pull the image from the Docker registry and create a container from the image.
孔西皮
2021/03/04
4740
Docker介绍与使用
docker容器化python服务部署(supervisor-gunicorn-flask)
本文系作者原创,转载请注明出处: https://www.cnblogs.com/further-further-further/p/13223767.html
用户7225427
2020/09/03
2.5K0
docker容器化python服务部署(supervisor-gunicorn-flask)
【目标检测】Flask+Docker在服务器部署YOLOv5应用
看到不少文章讲解用Flask部署YOLOv5的,不过基本都在本地上能够运行而戛然而止。因此,我打算再进一步,利用Docker在云服务器上部署YOLOv5,这样就能够开放给别人使用。
zstar
2022/09/23
4.7K1
【目标检测】Flask+Docker在服务器部署YOLOv5应用
Docker Compose 实战 — 搭建 Python Flask应用
官方参考地址:https://docs.docker.com/compose/gettingstarted/
李昂君
2021/12/24
2K0
Docker Compose 实战 — 搭建 Python Flask应用
docker学习笔记之三 容器
我们使用cd命令进入到该文件夹。然后我们创建一个叫做Dockerfile的文件。把以下内容复制并粘贴到刚才创建的文件中并保存。
魔王卷子
2019/05/30
4700
Docker 容器化部署 Python 应用
Docker是目前主流IT公司广泛接受和使用的,用于构建、管理和保护它们应用程序的工具。
Python数据科学
2019/09/08
3.3K1
请立刻停止编写 Dockerfiles 并使用 docker init
几天前,Docker 推出了 docker init 的通用版本。我已经尝试过,发现它非常有用,迫不及待地想在日常生活中使用它。
wayn
2024/03/02
2970
请立刻停止编写 Dockerfiles 并使用 docker init
docker镜像环境下部署 uWSGI + nginx + flask
│ └── requirements.txt # 项目上需要的python依赖组件
用户2141488
2025/03/17
1760
【Docker 系列】docker 学习九,Compose 内容编排官网初步体验
我们前面的文章学习了 docker ,为什么还要 Compose 呢?Compose到底是个啥玩意?
阿兵云原生
2023/02/16
4130
009.Docker Compose部署及基础使用
Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用YAML文件来配置应用程序的服务。然后,使用单个命令,您可以从配置中创建并启动所有服务。
木二
2019/07/26
8840
基于Gunicorn+Flask+Docker模型的高并发部署实践
在当今的Web开发领域,构建能够处理高并发请求的应用是开发者们经常面临的挑战。Flask作为一个轻量级的Web框架,以其简单易用和灵活性而受到广泛欢迎。然而,在生产环境中,直接使用Flask自带的服务器(Werkzeug)往往无法满足高并发的需求。这时,结合Gunicorn和Docker进行部署就显得尤为重要。本文将详细介绍如何使用Gunicorn作为WSGI HTTP服务器,结合Flask应用,并通过Docker容器化部署,以实现高并发的Web服务。
用户10781703
2024/07/25
5690
【愚公系列】2022年01月 Docker容器 Compose多容器启动
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。 Compose 使用的三个步骤:
愚公搬代码
2022/12/01
1.2K0
【愚公系列】2022年01月 Docker容器 Compose多容器启动
【Docker】从零开始将自己的应用打包到docker镜像
参考了网上各种文档,都感到说的不清不楚,实际操作过程中,又遇到了不少的坑,这里摸索OK后记录一下。
一枚hammer
2021/10/26
23.2K0
【云原生| Docker】 部署 Django & mysql 项目
从整体上看,我们定义了二个容器,分别是app、db,容器之间通过定义的端口进行通讯。定义了网络db_network,只有处在同一网络下的容器才能够互相通讯。不同网络之间是隔离的,即便采用同样的端口,也无法通讯。
计算机魔术师
2022/08/19
2K0
【云原生| Docker】 部署 Django & mysql 项目
相关推荐
实战 | ​Docker ubuntu:18.04 镜像制作
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档