把python项目部署在docker上

news/2024/9/20 17:53:35/文章来源:https://www.cnblogs.com/a565810497/p/18396174

前提,已经安装好docker了,docker的安装,请见另一篇博客

介绍一下需要运行的python项目结构,平时在pycharm里面只需要运行app.py文件即可

 

项目步骤如下:

1:创建一个上传到Centos系统的文件夹(名字随意)

docker_svnhook是要上传到Linux系统,生成Dokcer镜像的文件夹

这个文件夹下面有两个文件

一个是Dockerfile文件(没有后缀名)

Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。有了 Dockerfile,就可以创建我们所需要的镜像

内容如下

# 使用官方的 Python 3.9 作为基础镜像
FROM python:3.9-slim# 设置工作目录
WORKDIR /code# 将 requirements.txt 复制到容器中
COPY /svnhook/requirements.txt .# 安装依赖项
RUN pip install --no-cache-dir -r requirements.txt# 将应用程序代码复制到容器中
COPY . .# 暴露应用程序运行的端口
EXPOSE 5000# 运行 Flask 应用程序
CMD ["python", "/code/svnhook/package/app.py"]

 

 需要注意的是,如果工作目录设定好了以后,需要在CMD启动程序填入完成的路径,不然会报路径错误

 

一个svnhook文件夹(名字随意),包含了工程的代码,还有运行工程所需要的环境列表

 

package就是python项目的源码所在目录,直接复制过来

 

 requirements.txt就是我们的依赖,生成方法如下

cmd命令进入工程目录,执行pip freeze > requirements.txt

 

会在该目录下生成一个requirements.txt文件,会把我们整个环境中的包都列出来,我们自己也可以看看多了那些事不需要的包,或者缺了那些,用以下的格式补进去就可以了

 

2:上传到linux环境,生成镜像

2.1:用ftp把文件上传到虚拟机系统的某个路劲,如果文件太大了,可以压缩后再上传

可以先在虚拟机创建一个文件夹

mkdir svnhoos

2.2进入docker_svnhooks文件夹

 

2.3:创建镜像

         执行命令:docker build -t svnhooks .

         svnhooks 为创建的镜像名称,. 表示当前目录(docker_svnhooks)

 

2.4:查看镜像是否创建成功

docker images

 看到刚刚创建的svnhook的镜像,已经存在了

 

3:运行镜像,生成并启动容器

执行命令

docker run -it -p 5000:5000 --name svnhook svnhooks

-it:表示交互式终端的容器,非启动后立刻结束的容器,初始调试可以用这个,可以看到控制台输出内容,只是部署的话用 -d  后台运行

-p 5000:5000:表示将docker的5000端口,映射到Linux虚拟机的5000端口

也就是说,访问Linux虚拟机的5000端口,就是在访问docker容器的5000端口,这里因为我的工程暴露的端口是5000,所以我设的是5000

--name svnhook:给容器取个名字,嫌麻烦可以省去

svnhooks:容器是用哪个镜像启动的(一个容器,必须依赖一个镜像启动)

现在访问系统,只需要访问虚拟机的IP加端口即可

 

4:代码有改动需要重新部署

只需要把镜像删除后,再按照上面的步骤重新部署即可

5:删除镜像

5.1:先停止容器 ,用 docker ps 查看正在运行的容器

 

然后使用docker stop  container id,就可以停止容器

 

 5.2:删除容器

docker rm  container id

5.3:删除镜像,先查看镜像 docker iamges

找到要删除的镜像后,执行:docker rmi image id

如果您希望强制删除镜像并且不想手动删除相关容器,可以使用 -f 选项:

docker rmi -f <image_name_or_id>

 这样会强制删除镜像及所有依赖它的容器。请谨慎使用。

本篇文章有参考以下文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/792048.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超级快速搜索重复文件并批量删除重复文件的AutoHotkey辅助脚本 2024年9月4日

超级快速搜索重复文件并批量删除重复文件的AutoHotkey辅助脚本 2024年9月4日; 超级快速搜索重复文件并批量删除重复文件的AutoHotkey辅助脚本 2024年9月4日/* 用法:1、安装 MasterSeeker 1.5.1 by DxCK 或者安装 UltraSearch Professional Version 4.2.0.925 64位2、安装 Dupl…

pip install 安装时,提示【 Could not install packages due to an OSError: [Errno 13] Permission denied】

参考资料:【Python】已解决:ERROR: Could not install packages due to an OSError: [WinError 5] 拒绝访问。 我的问题: 使用pip install 安装时,遇到【Could not install packages due to an OSError: [Errno 13] Permission denied】的错误,提示可能需要【--user】选项…

使用PyTorch从零构建Llama 3

我们上次发了用PyTorch从零开始编写DeepSeek-V2的文章后,有小伙伴留言说希望介绍一下Llama 3。那么今天他就来了,本文将详细指导如何从零开始构建完整的Llama 3模型架构,并在自定义数据集上执行训练和推理。[图1]:Llama 3架构展示训练和推理流程。因为官方Llama 3论文中未提…

windows10安装了docker destop后无法使用oracle virtualbox问题解决

1.卸载docker destop2.关闭虚拟化控制面板-->添加删除程序-->启用和关闭windows功能 3.执行如下命令bcdedit /set hypervisorlaunchtype offdism.exe /Online /Disable-Feature:Microsoft-Hyper-V-All4.重启动

Web和移动安全之​​介绍

祺印说信安 2024-01-26 00:00 发表于河南 以下文章来源于河南等级保护测评 ,作者铸盾安全 介绍 本知识领域的目的是概述现代网络和移动生态系统中的安全机制、攻击和防御。本概述旨在用于学术课程,并指导对该领域感兴趣的行业专业人士。 Web和移动安全已成为许多用户与Intern…

prometheus学习笔记之服务发现

一、prometheus 的服务发现机制prometheus 默认是采用 pull 方式拉取监控数据的, 也就是定时去目标主机上抓取 metrics 数据, 每一个被抓取的目标需要暴露一个 HTTP 接口, prometheus通过这个暴露的接口就可以获取到相应的指标数据,这种方式需要由目标服务决定采集的目标有…

iverilog+gtkwave搭建轻量级verilog仿真环境

前言 在之前用到的仿真工具只有vivado与modelsim,vivado的笨重不用多说,可能你搭建一个工程的时间比你看波形的时间还要长,modelsim倒是稍微轻一些,但步骤也较为繁琐,虽然我在之前也意外收获了modelsim的仿真脚本模板且屡试不爽,但还是觉得稍微有些麻烦,正好之前在学习t…

大厂为啥都发苹果电脑?哪个系统是开发之王?

大家到底用哪个操作系统来学编程呢?大家好,我是程序员鱼皮。最近秋招火热进行中,今年大厂为了抢人才,各出奇招。比如腾讯校招支持 24 届应届生投递,京东校招开放 1.8 万个岗位、同时将校招生薪酬再次大幅上调!大厂除了薪资福利待遇能打之外,资源和配套设施也会更齐全一些…

Minesweeper++

好久之前的冷饭,来炒一下。 代码链接本文来自博客园,作者:haozexu,转载请注明原文链接:https://www.cnblogs.com/haozexu/p/18396085

如何在 Cursor 中使用驭码CodeRider?

驭码CodeRider 是极狐GitLab 公司自研发布的 AIGC 产品,可以用来进行 AI 编程和 DevOps 流程处理。本文分享如何在 Cursor 中使用驭码CodeRider。 Cursor 是近期比较火爆的一款 AI 代码编辑器,通过将 AI 能力引入软件研发来提升软件研发效率。而驭码CodeRider 除了具备 AI 编…