windows部署python项目(以Flask为例)到docker,通过脚本一键生成dockerfile并构建镜像启动容器

这篇具有很好参考价值的文章主要介绍了windows部署python项目(以Flask为例)到docker,通过脚本一键生成dockerfile并构建镜像启动容器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、生成requirements.txt

这里使用pipreqs进行依赖库的识别。使用 pipreqs 可以自动检索到当前项目下的所有组件及其版本,并生成 requirements.txt 文件。相比直接用pip freeze 命令,避免将整个python环境的依赖包写入。
在项目的当前目录中执行
pipreqs ./ --encoding=utf8 --force
这里使用的是一个基于flask项目,目录结构如下
windows部署python项目(以Flask为例)到docker,通过脚本一键生成dockerfile并构建镜像启动容器

2、编写dockerfile

dockerfile定义python版本号,将本地项目进行拷贝,定义启动命令。
这部分固定流程我们其实可以抽象出来通过自定义脚本去一键生成。这里做一个简单的示例。自动生成脚本见文末。

# 基于的基础镜像
FROM python:3.8.8

# 设置app文件夹是工作目录
WORKDIR /usr/src/app

# 先将依赖文件拷贝到项目中
COPY requirements.txt /usr/src/app

# 执行指令,安装依赖
RUN pip install -r requirements.txt

# 拷贝当前目录的项目文件和代码
COPY . /usr/src/app

# 执行命令
CMD [ "python", "/usr/src/app/app.py" ]

3、构建镜像

这里以我自己写的一个疫情可视化的flask项目为例,项目名称为epidemic

docker build -f dockerfile -t epidemic .

这里就是读取项目目录下的dockerfile进行构建
-f

4、启动容器

镜像构建完成后使用docker run启动容器,-p指定

docker run -it -p 5001:5000 --name epidemic_container epidemic

-p 指定端口映射,格式为:主机(宿主)端口:容器端口
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
运行完成后我们就能看到如下界面,这里的控制台输出的就是此时容器中的flask运行控制台了。
windows部署python项目(以Flask为例)到docker,通过脚本一键生成dockerfile并构建镜像启动容器

我们本地访问我们配置的映射端口即可,浏览器输入127.0.0.1:5001即可

查看我们刚刚生成的容器。
windows部署python项目(以Flask为例)到docker,通过脚本一键生成dockerfile并构建镜像启动容器

5、编写脚本自动化完成上述操作

通过脚本去将第二章中的dockerfile设置为模板,每次只需要自定义镜像名称即可,也可直接使用默认值。
脚本按如下逻辑依次执行

完整代码如下

import os
import sys
import time


def get_cmd(cmd):
    res = os.popen(cmd)
    return res.read()


class Generate:
    def __init__(self, dockerfile_name="generate.dockerfile", image_name="docker_img"):
        self.dockerfile_name = dockerfile_name
        self.image_name = image_name

    def generate_dockerfile(self, work_dir="/usr/src/app", main_file="app.py"):
        # 首先生成dockerfile模板,python版本通过命令行获取
        python_version = sys.version.split(" ")[0]
        template = f"""
FROM python:{python_version}
WORKDIR {work_dir}
COPY requirements.txt {work_dir}
RUN pip install -i https://pypi.doubanio.com/simple/ -r requirements.txt
COPY . {work_dir}
CMD [ "python", "{work_dir}/{main_file}" ]
"""
        # 检查requirements.txt文件是否存在,不存在则调用命令生成生成
        if not os.path.exists("requirements.txt"):
            print("正在等待requirements.txt文件生成,请稍候....")
            os.system("pip install -i https://pypi.doubanio.com/simple/ pipreqs && pipreqs ./ --encoding=utf8 --force")
            while not os.path.exists("requirements.txt"):
                print("正在等待requirements.txt文件生成...")
                time.sleep(2)

        # 确定requirements文件生成后,将dockerfile写入到本地
        with open(self.dockerfile_name, "w") as f:
            f.write(template)
        print(f"dockerfile生成成功,文件名称为{self.dockerfile_name}")
        return True

    def build_image(self):
        images = get_cmd(f"docker images")
        if self.image_name not in images:
            cmd = f"docker build -f {self.dockerfile_name} -t {self.image_name} ."
            print(cmd)
            os.system(cmd)
            return self.image_name in images
        return False

    def run_container(self, container_name, local_port=5001, container_port=5000):
        cmd = f"docker run -p {local_port}:{container_port} --name {container_name} {self.image_name}"
        #cmd = f"docker run {self.image_name}"
        print(cmd)
        os.system(cmd)


if __name__ == '__main__':
    generate = Generate(dockerfile_name="generate_dockerfile.dockerfile", image_name="epidemic")
    generate.generate_dockerfile()
    generate.build_image()
    generate.run_container(container_name="epidemic_container", local_port=5001, container_port=5000)

运行完成后的输出如下
windows部署python项目(以Flask为例)到docker,通过脚本一键生成dockerfile并构建镜像启动容器

6、end

如果需要部署示例的这份源码可以关注公众号"一颗程序树"在公众号菜单进行获取
windows部署python项目(以Flask为例)到docker,通过脚本一键生成dockerfile并构建镜像启动容器文章来源地址https://www.toymoban.com/news/detail-400640.html

到了这里,关于windows部署python项目(以Flask为例)到docker,通过脚本一键生成dockerfile并构建镜像启动容器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python项目结构示例(python代码结构、python目录结构)与python部署结构、python部署目录、flask项目结构、flask目录

    myproject/ :项目的根目录,也是Python包的根目录。 myproject/__init__.py :一个空的 __init__.py 文件,用于将 myproject 目录标记为一个Python包。 myproject/module1.py 、 myproject/module2.py 等:项目的模块文件,包含项目的核心代码。 tests/ :测试目录,包含用于测试项目代码的测试文件。

    2024年02月12日
    浏览(40)
  • Docker 部署后端项目自动化脚本

    这里的项目位置是target同级目录 1.在项目下面新建一个bin目录 新建一个package.txt 写入下方代码后 后缀改为.bat 2.项目下新建一个deploy文件夹里面新建一个deploy.ps1脚本文件 示例 这里使用ssh 可以自己编写不太一样 上传到服务器中后自己选择一个合适的文件夹 然后旁边新建一个

    2024年02月01日
    浏览(41)
  • python Flask web项目uwsgi + nginx部署

    略 2.1安装vertualenv 2.2创建虚拟环境 创建保存环境的目录: 创建虚拟环境: 查看虚拟环境: 2.3激活虚拟环境 activiate是激活虚拟环境的命令脚本,在虚拟环境的bin目录下 执行activate激活环境 3.1安装uwsgi 激活虚拟环境,安装uwsgi 3.2基于uwsgi运行flask项目 3.2.1命令的方式 3.2.2配置文

    2024年02月10日
    浏览(37)
  • 使用IIS服务器部署Flask python Web项目

    参考文章 参考文章 将Flask应用程序部署到IIS服务器上需要一些步骤,因为IIS是为.NET应用程序设计的。要将Flask Python Web项目部署到IIS服务器,您需要使用一个称为\\\"FastCGI\\\"的桥接工具来连接IIS和Python应用程序。以下是将Flask应用程序部署到IIS服务器的一般步骤: 安装IIS和FastCG

    2024年04月16日
    浏览(43)
  • 怎么通过docker/portainer部署vue项目

    这篇文章分享一下如何通过docker将vue项目打包成镜像文件,并使用打包的镜像在docker/portainer上部署运行,写这篇文章参考了vue-cli和docker的官方文档。 首先,阅读vue-cli关于docker部署的说明,上面提供了关键的几个步骤。 从上面的页面内容中,得出了以下结论:前端项目需要

    2024年02月07日
    浏览(26)
  • IDEA通过Docker插件部署SpringBoot项目

    找到并编辑服务器上的docker.service文件。 在下面ExecStart替换成下面的 有以下信息输出说明配置成功 连接成功就可以在idea里面使用docker了 1、pom.xml中添加Docker插件坐标 这是为了在本项目中引入docker来管理,毕竟最后要使用docker把项目打包成一个镜像。 注意三个事情: 1.版本

    2024年02月07日
    浏览(34)
  • Python 基于docker部署的Mysql备份查询脚本

    前言 此环境是基于docker部署的mysql,docker部署mysql可以参考如下链接: docker 部署服务案例-CSDN博客 颜色块文件 备份代码 此代码如果是本地环境测试的话,逻辑是判断当前本地有没有存储备份数据的目录,没有则创建。 再利用subprocess执行mysqldump命令,按照日期生成.sql文件

    2024年04月26日
    浏览(19)
  • Windows服务器,通过Nginx部署VUE+Django前后端分离项目

    基本说明 安装 Nginx 部署 VUE 前端 部署 Django 后端 Django admin 静态文件(CSS,JS等)丢失的问题 总结 本文介绍了在 windows 服务器下,通过 Nginx 部署 VUE + Django 前后端分离项目。本项目前端运行在 80 端口,服务器端运行在 8000 端口。因此本项目使用 Django 的 runserver 命令进行部署

    2024年02月05日
    浏览(50)
  • windows版docker部署springcloud项目

    1.windows版docker环境(其他版教程可能道理一样但是比如文件后坠名上可能有差异) 2.运行好的数据库容器(实现教程) 3.所有jar包 最后整好的文件夹结构图(原工程文件机密,可以找我寻求帮助,但是需要一点点小心意): 4个文件夹分别是装有4个微服务jar包 Dockerfile文件是

    2024年02月15日
    浏览(23)
  • 手把手教你通过 Docker 部署前后端分离项目(亲测可用)

    安装Docker 安装Nginx 安装Mysql 部署SpringBoot项目 部署Vue项目 一、安装Docker 1、安装: 2、启动/停止/重启docker服务 3、查看docker版本信息 4、运行helloword,因为不存在此镜像,docker会自动下载运行本镜像 5、查看所有docker镜像 二、安装Nginx 1、拉取Nginx镜像文件 2、查看下载好的镜像

    2023年04月24日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包