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

Docker部署python-Flask应用的更多相关文章

  1. 使用wfastcgi在IIS上部署Python Flask应用

    本文介绍了如何在Windows上部署Python Flask应用,相关环境如下: 操作系统:windows 7 Python:3.4 WFastCGI: 2.2 应用所用到的包版本如下: Flask= ...

  2. 笔记14:Docker 部署Python项目

    Docker 部署Python项目 导读: 软件开发最大的麻烦事之一就是环境配置,操作系统设置,各种库和组件的安装.只有它们都正确,软件才能运行.如果从一种操作系统里面运行另一种操作系统,通常我们采取 ...

  3. Docker部署Python应用程序

    Docker部署Python应用程序 1. 单个py文件部署 生成Dockerfile 文件 插件用的豆瓣的镜像,,重置时间(容器的默认时间是UTC时间与宿主机的相差8小时). 文中需要三个插件(pe ...

  4. 使用Nginx+Uwsgi部署Python Flask项目

    第一次用Flask做Web(也是第一次用Python做Web),在部署的时候遇到了不少问题,现在将过程就下来,供在这方面也有疑惑的人参考.(PS:使用Apache+mod_wsgi部署模式的可以参考另 ...

  5. 使用docker 部署python 项目

    使用python 开发了一个restfu api程序,使用docker镜像部署.主要有如下步骤,简单记录以供以后参考. 1. 创建DockerFile文件 创建一个DockerFile文件,文件名为D ...

  6. Docker部署Python项目

    简介 软件开发最大的麻烦事之一就是环境配置,操作系统设置,各种库和组件的安装.只有它们都正确,软件才能运行.如果从一种操作系统里面运行另一种操作系统,通常我们采取的策略就是引入虚拟机,比如在 Wind ...

  7. 使用Flask+nginx+uwsgi+Docker部署python应用

    https://www.cnblogs.com/vh-pg/p/11731637.html

  8. Docker在手,天下我有,在Win10系统下利用Docker部署Gunicorn+Flask打造独立镜像

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_164 书接上回,之前一篇:Win10环境下使用Flask配合Celery异步推送实时/定时消息(Socket.io)/2020年最 ...

  9. Docker部署Python爬虫项目

    1) 首先安装docker: # 用 yum 安装并启动 yum install docker -y && systemctl start docker 2) 下载自定义镜像需要用到的 ...

  10. Docker下Python Flask+Redis+MySQL+RQ队列简单配置

    本篇博文主要讲解Docker下使用RQ队列的通信配置,主要是网上的部分文章写的不太清楚,特写一篇 作者使用docker-compose.yml文件调度各部分文件Dockerfile,起初是这样写的 v ...

随机推荐

  1. 【C++】GoogleTest进阶之gMock

    gMock是什么 当我们去写测试时,有些测试对象很单纯简单,例如一个函数完全不依赖于其他的对象,那么就只需要验证其输入输出是否符合预期即可. 但是如果测试对象很复杂或者依赖于其他的对象呢?例如一个函数 ...

  2. MyBatisPlus分页插件在SpringBoot中的使用

    文章目录 1.目录结构 2.新增配置 3.编写测试类 4.测试结果 5.数据库中的表 文件的创建: https://blog.csdn.net/weixin_43304253/article/deta ...

  3. 使用NEON指令加速RGB888和RGB565的相互转换

    最近在做一个项目需要将RGB888转换为RGB565,用C语言转换的代码很简单,这是从ffmpeg中摘抄的代码 static inline void rgb24to16_c(const uint8_t ...

  4. python创建icon图标

    def extension_replace(path,extension): for i in range(1,len(path)): if (path[-i] == '.'): new_path = ...

  5. Linux文件属性与管理

    文件或目录属性主要包括: 索引节点,inode 文件类型 文件权限 硬链接个数 归属的用户和用户组 最新修改时间 查看命令 ls -lhi /opt 图解: Inode索引节点号,(人的身份证,家庭地 ...

  6. 快读《ASP.NET Core技术内幕与项目实战》WebApi3.1:WebApi最佳实践

    本节内容,涉及到6.1-6.6(P155-182),以WebApi说明为主.主要NuGet包:无 一.创建WebApi的最佳实践,综合了RPC和Restful两种风格的特点 1 //定义Person类 ...

  7. 出现The server time zone value ‘�й���׼ʱ��‘ is unrecognized的解决方法

    使用mybatis链接数据库时出现如下错误, The server time zone value '�й���׼ʱ��' is unrecognized or represents more tha ...

  8. 「浙江理工大学ACM入队200题系列」问题 B: 零基础学C/C++12——求平均值

    本题是浙江理工大学ACM入队200题第二套中的B题 我们先来看一下这题的题面. 由于是比较靠前的题目,这里插一句.各位新ACMer朋友们,请一定要养成仔细耐心看题的习惯,尤其是要利用好输入和输出样例. ...

  9. hadoop配置day01

    hadoop 安装jdk 配置文件: sudo vim /etc/profile 配置文件: export JAVA_HOME=/home/hadoop/jvm/jdk1.8.0_341 export ...

  10. C#通过unsafe来操作指针

    这里不介绍unsafe的理论,这里单单介绍它的用法.如果要了解的更具体,可以看这篇大神的博文:C#通过指针操作图像 先从一个很简单的例子介绍: private void TestInptr() { u ...