title: Docker部署python Flask应用
date: 2022-11-19 13:00:25
tags:
- python

环境

系统:windows10

python:python3

快速开始

首先我们需要创建一个文件夹,目录结构如下:

- rootdir # 项目根目录
- app.py #入口文件
- Dockerfile # 镜像文件

创建完成后在命令行安装Flask:

pip install Flask

app.py中写入示例代码:

#!/usr/bin/python
from flask import Flask app = Flask(__name__) @app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
@app.route("/generate")
def generate_new():
return "<h1>generate new</h1>" print("running")
app.run(host='0.0.0.0',port=80)

然后编写dockerfile文件:

# 基础镜像
FROM python:3.7-slim-buster # 设置镜像内的工作目录
WORKDIR /code # 复制项目目录下的requirements.txt文件 到/code/requirements.txt
COPY requirements.txt requirements.txt # 在工作目录下执行命令
RUN pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ # 复制项目目录下所有文件到 /code/目录下
COPY . . # 暴露80端口
EXPOSE 80 # 容器运行时执行命令
CMD ["python","app.py"]

关于dockerfile语法,百度找个文章看一下就行了,比较简单

然后在项目目录下执行命令构建镜像:

docker build --pull --rm -f "Dockerfile" -t pythondockerdemo:latest "."

我是直接用vscode的docker插件构建的,可以直接在dockerfile文件上右键执行,等同于上面这条语句

生成完成后用docker run命令执行即可

进一步的任务

多实例部署

如果需要部署多个示例,一种是用dockercompose控制绑定的宿主机端口,缺点在于每一个实例需要占用一个端口号,而且yaml文件有几个实例要写几个服务,另一种就是用docker swarm,这种就不需要自己控制端口,yaml文件也比较简单,不过更复杂一点,需要搭建docker swarm的环境,更进一步的,也可以使用k8s,那就是另一个话题了

文件处理

第一个方法是直接使用文件挂载,第二个是存储在mongodb数据库,直接从数据库操作即可(需要修改的配置文件可以包在镜像里,通过文件挂载修改,其他业务文件直接数据库或OSS等云服务处理)

参考文章

  1. Docker系列四DockerFile打造Python镜像
  2. Flask中文文档
  3. python生成requirements.txt文件
  4. Dockerfile语法
  5. Dockerfile语法

最新文章

  1. Yahoo14条军规-前端性能优化
  2. (转)VS.NET2010水晶报表安装部署[VS2010]
  3. 判断Check复选框是否选中
  4. POJ 2027
  5. Java多线程之锁
  6. 软件测试 -- 测试人员和QA的区别
  7. Oracle EBS R12 WIP Component Issue&amp;Return Process
  8. 【转】文件读写NDK(或Linux)
  9. c++单元测试框架googletest
  10. 一个Windows C++的线程池的实现
  11. JAVA自增自减的玄机
  12. RELabel : 一个极简的正则表达式匹配和展示框架
  13. jdk8 JAVA_OPTS
  14. 安装JBoss Tool 出错
  15. [poj1160][IOI2000]Post Office【动态规划】
  16. Unity3D中播放视频的方法
  17. linux下如何查看多核负载情况【转】
  18. xp下对dinput8.dll 游戏键盘输入的模拟 非函数hook
  19. 远程计算机 进程/服务 启动停止(WMI)
  20. SWT开发工具

热门文章

  1. 路由组件构建方案(分库分表)V1
  2. 2.-url和视图函数
  3. C#--@符号的使用(逐字字符串,跨行,声明关键字变量名)
  4. Microsoft Office for Mac最新版本安装教程,亲测可用!!!
  5. 四、docker容器管理
  6. 漫谈Entity-Component-System
  7. 一次 Java log4j2 漏洞导致的生产问题
  8. 「浙江理工大学ACM入队200题系列」问题 E: 零基础学C/C++78——求奇数的乘积
  9. Vue3 —— 组件练习题(附源码)
  10. SpringCloud——Eureka Feign Ribbon Hystrix Zuul等关键组件的学习与记录