首页 > 编程语言 >Docker部署python-Flask应用

Docker部署python-Flask应用

时间:2023-01-12 09:37:00浏览次数:65  
标签:文件 requirements python app Flask Docker txt

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语法

标签:文件,requirements,python,app,Flask,Docker,txt
From: https://www.cnblogs.com/lizhenghao126/p/17045499.html

相关文章

  • arm mysql8.0 docker-compose
    version:"3"services:mysql:image:beercan1989/arm-mysql:latestcontainer_name:data_exchange_databaseports:-3306:3306environment......
  • Python爬虫-第三章-5-利用xpath爬取某八戒网相关词语公司的信息和价格
    #DemoDescribe:数据解析xpathimportrequestsfromlxmlimportetreefromfake_useragentimportUserAgent'''companytitleprice'''#picType=input('输......
  • python excel转Markdown
    使用Python,将Excel表格转成Markdown格式。废话不多说直接上代码。Excel文件的位置:D:\data\data.xlsx代码执行完成之后会在python文件所在的位置生成一个output.txt文件,......
  • Python实现冒泡排序、选择排序、插入排序
    排序与搜索排序算法(英语:Sortingalgorithm)是一种能将一串数据依照特定顺序进行排列的一种算法。排序算法的稳定性稳定性:稳定排序算法会让原本有相等键值的纪录维持相对......
  • Python程序执行shell命令并关闭进程-总结
    需求说明linux下,有时候我们用Python3执行一个shell命令,这会开启一个进程。但是这个进程可能能不会主动关闭(比如Linux下的ping指令会一直持续执行),我们希望这个进程执行指......
  • python+mysql—高效的数据处理方案
    python+mysql——高效的数据处理方式使用场景大规模数据处理;多个任务可以并发执行;需要保存结果;为实现以上三个要求,就需要充分利用服务器中的多核资源,让程序高效并发执......
  • python读取cmd命令行
    importosimportuiautomationasautoimportwin32clipboardasclipboardimportwin32condefgetCopy():clipboard.OpenClipboard()res=clipboard.GetC......
  • Flask-SQLAlchemy 连接数据库
    (一)前言SQLAlchemy“采用简单的Python语言,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型”。SQLAlchemy是目前Python中最强大的ORM框架,功能全面。F......
  • python学习_PIL的Image模块初步使用
    基本介绍:Pillow是Python中较为基础的图像处理库,主要用于图像的基本处理,比如裁剪图像、调整图像大小和图像颜色处理等。与Pillow相比,OpenCV和Scikit-image的功能更......
  • Docker安装mysql
    一、mysql安装1)在/usr/local/mysql下创建两个文件夹(conf、data)  2)在/usr/local/mysql/conf下创建文件my.cnf  my.cnf文件配置[mysqld]#Mysql服务的唯一编......