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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
JavaScript HTML DOM 节点列表
一些旧版本浏览器中的方法(如:getElementsByClassName())返回的是 NodeList 对象,而不是 HTMLCollection 对象。
陈不成i
2021/07/20
2K0
JavaScript HTML DOM
当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。
zhangjiqun
2024/12/16
2180
JavaScript HTML DOM
JavaScript 学习-28.元素与节点(HTMLCollection 和 NodeList)
前言 我们平常说的查找元素 和 节点到底有什么区别?为什么有时候返回HTMLCollection ,有时候返回NodeList? HTMLCollection 和  NodeList 的区别又是什么?带着这些问题进入本篇的学习。 节点与元素 根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点: 整个文档是一个文档节点 每个 HTML 元素是元素节点 HTML 元素内的文本是文本节点 每个 HTML 属性是属性节点 注释是注释节点 以下示例 <div id="user"> <
上海-悠悠
2022/05/30
2.1K0
JavaScript 学习-28.元素与节点(HTMLCollection 和 NodeList)
JavaScript离别之作——HTML元素操作
document对象提供了一些用于查找元素的方法,利用这些方法可以根据元素的id、name和class属性以及标签名称的方式获取操作的元素。
全栈程序员站长
2022/09/09
1.2K0
JavaScript离别之作——HTML元素操作
javascript之DOM操作
http://www.cnblogs.com/kissdodog/archive/2012/12/25/2833213.html
bear_fish
2018/09/19
5650
JavaScript DOM基础
DOM(Document Object Model)即文档对象模型,针对HTML和XML文档的API(应用程序接口)。 一.DOM介绍 DOM中的三个字母,D(文档)可以理解为整个Web加载的网页文档;O(对象)可以理解为类似window对象之类的东西,可以调用属性和方法,这里我们说的是document对象;M(模型)可以理解为网页文档的树型结构。 DOM有三个等级,分别是DOM1、DOM2、DOM3,并且DOM1在1998年10月成为W3C标准。DOM1所支持的浏览器包括IE6+、Firefox、Safa
汤高
2018/01/11
1.4K0
前端架构师之10_JavaScript_DOM
第1级DOM(DOM Level 1,或DOM1)。为XML和HTML文档中的元素、节点、属性等提供了必备的属性和方法。结合了Netscape及微软公司开发的DHTML(动态HTML)思想。
张哥编程
2024/12/13
2280
JavaScript——DOM基础
文档对象模型(Document Object Model),简称DOM,是W3C组织推荐的处理可扩展标记语言(HTML或者XML)的标准接口。
岳泽以
2022/10/26
6.7K0
JavaScript——DOM基础
JavaScript 学习-27.查找HTML DOM节点(元素)
前言 如何查找和访问 HTML 页面中的节点元素?也就是我们经常说的定位元素的一些方法。 查询 HTML 节点(元素)一些方法 查找 html 页面上的元素,可以用以下方法 方法 节点类型 getElementById() 通过 id 查找 HTML 元素 getElementsByClassName() 通过标 class 属性查找 HTML 元素 getElementsByName() 通过标 name 属性查找 HTML 元素 getElementsByTagName() 通过标 tag 标签查找 H
上海-悠悠
2022/05/26
1.5K0
【Web APIs】JavaScript 操作多个元素 ① ( 多选一互斥按钮案例 | getElementsByTagName 方法获取 HTMLCollection 伪数组对象 )
实现如下效果 , 页面中有多个按钮 , 点击一个按钮 , 本按钮高亮显示 , 将其它按钮重置 ;
韩曙亮
2024/08/09
2200
【Web APIs】JavaScript 操作多个元素 ① ( 多选一互斥按钮案例 | getElementsByTagName 方法获取 HTMLCollection 伪数组对象 )
前端基础-节点操作
document.createElement() 用来生成网页元素节点,参数为元素的标签名;
cwl_java
2020/03/26
4.4K0
Javascript DOM(一)
预解析:js 引擎会把 js 里面所有的 var 和 function 提升到当前作用域的最前面
赤蓝紫
2023/01/01
1.2K0
Javascript DOM(一)
【Web APIs】DOM 文档对象模型 ② ( 根据标签名获取 DOM 元素 - getElementsByTagName 函数 | 获取指定标签下的 DOM 元素 )
调用 Document.getElementsByTagName 函数 或 Element.getElementsByTagName 函数 , 可以获取 指定标签名称 的 若干 Element 对象集合 ;
韩曙亮
2024/06/19
3180
【Web APIs】DOM 文档对象模型 ② ( 根据标签名获取 DOM 元素 - getElementsByTagName 函数 | 获取指定标签下的 DOM 元素 )
一篇文章带你了解JavaScript htmldom 元素
通常,使用JavaScript,想操作HTML元素。要做到这一点,必须先找到元素。有几种方法可以做到这一点。
前端进阶者
2021/05/17
2K0
一篇文章带你了解JavaScript htmldom 元素
DOM操作
1.概述 1.1DOM DOM是JavaScript操作网页的接口,全称为“文档对象模型”(Document Object Model)。文档对象模型 (DOM) 是HTML和XML文档的编程接口。它给文档(结构树)提供了一个结构化的表述并且定义了一种方式—程序可以对结构树进行访问,以改变文档的结构,样式和内容。 浏览器会根据DOM模型,将结构化文档(比如HTML和XML)解析成一系列的节点,再由这些节点组成一个树状结构(DOM Tree)。所有的节点和最终的树状结构,都有规范的对外接口。所以,DOM可以理
小胖
2018/06/27
2K0
HTML5+CSS3+JavaScript从入门到精通-20
HTML5+CSS3+JavaScript从入门到精通 作者:王征,李晓波 第二十章 JavaScript的DOM编程 案例 20-01 HTML文档的节点属性 <!DOCTYPE html> <!--web20-01--> <!-- 文档对象模型(DOM)是指W3C定义的标准的文档对象模型。 利用DOM中的对象,开发人员可对文档(如HTML)进行读取、搜索、修改、添加和删除等操作. DOM将整个文档展现为内存中的一棵树,每个元素、属性都是树上的一个节点。 --> <ht
qiqi_fu
2021/12/06
6920
HTML5+CSS3+JavaScript从入门到精通-20
JavaScript之Style属性学习
当CSS使用伪类开始侵入DOM和JavaSCript所控制着的行为层时,DOM和JavaScript也使用他们的一系列样式去控制表现层,这篇随笔主要说的就是利用JavaScript去控制元素的表现形式, 一、Style属性 文档中的每一个元素都是一个对象,每个对象又有着各式各样的属性。有一些元素告诉我们元素在节点树上的位置信息。比如说,parentNode、nextSibling、previousSibling、childNodes、 firstChild、lastChild这些属性,就告诉了我们文档中各节
郑小超.
2018/01/24
2.3K0
【前端基础篇】JavaScript之DOM介绍
WebAPI 就包含了 DOM + BOM. 这个是 W3C 组织规定的. (和制定 ECMAScript 标准的大佬们不是一伙人).
半截诗
2024/10/09
2630
【前端基础篇】JavaScript之DOM介绍
JavaScript DOM
JavaScript DOM 是指 JavaScript 中的文档对象模型(Document Object Model);它允许 JavaScript 与 HTML 页面交互,使开发者可以通过编程方式动态地修改网页内容和样式,以及响应用户的交互。
久绊A
2023/03/25
6770
从零开始学 Web 之 DOM(二)对样式的操作,获取元素的方式
大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程。此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注。在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目。现在就让我们一起进入 Web 前端学习的冒险之旅吧! 1、对样式的操作 1.1、点击按钮设置 div 的宽高和背景颜色 <body> <input type="button" value="显示颜色" id="btn"> <div id="dv"></div> <scri
Daotin
2018/08/31
2.2K0
相关推荐
JavaScript HTML DOM 节点列表
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档