Loading

Docker部署python-Flask应用

环境

系统: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语法
posted @ 2023-01-12 09:22  李正浩  阅读(202)  评论(0编辑  收藏  举报