【Docker】python flask 项目如何打包成 Docker images镜像 上传至阿里云ACR私有(共有)镜像仓库 集成Drone CI

一、Python环境编译

1、处理好venv环境

要生成正常的 requirements.txt 文件,我们就需要先将虚拟环境处理好

创建虚拟环境(可选):

在项目目录中,你可以选择使用虚拟环境,这样你的项目依赖将被隔离在一个独立的环境中。可以使用以下命令创建虚拟环境:

python -m venv venv

1.1、然后激活虚拟环境:

在 Windows 上:

venv\Scripts\activate

在 macOS/Linux 上:

source venv/bin/activate

2、生成 requirements.txt

前提我们需要将项目中的所有的依赖安装到激活的venv中
如果你想要生成 requirements.txt 文件,可以使用以下命令:

pip freeze > requirements.txt

这将生成 requirements.txt 文件中列出的所有依赖项。

3、尝试安装 requirements.txt:

确保你的项目中已经安装了所有依赖,你可以使用以下命令:

pip install -r requirements.txt

二、.gitignore

在我们提交代码时,需要忽略我们的虚拟环境!!!

venv/

三、Dockerfile 配置

这里面我使用了自己打的基础镜像:registry.cn-beijing.aliyuncs.com/ctra_test/python:3.9
使用pip中文镜像源:https://mirrors.aliyun.com/pypi/simple/
为了提高下载的速度

完整 Dockerfile 如下:

# 使用自己的python 镜像作为基础镜像
FROM registry.cn-beijing.aliyuncs.com/ctra_test/python:3.9# 设置工作目录
WORKDIR /app# 复制项目文件到工作目录
COPY . /app# 设置APT的环境变量
ENV DEBIAN_FRONTEND=noninteractive# 更换 pip 源为阿里云镜像 1
RUN pip install --no-cache-dir --upgrade pip \&& pip install --no-cache-dir -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt# 暴露应用程序的端口
EXPOSE 5000# 设置环境变量
ENV FLASK_APP=app.py# 运行应用程序
CMD ["flask", "run", "--host=0.0.0.0"]

四、.drone.yml 使用Drone CI工具

完整 drone.yml 如下:

kind: pipeline
type: docker
name: flask
steps:- name: build_imageimage: plugins/docker:20depends_on: [clone]# volumes:#   - name: docker-sock#     path: /var/run/docker.socksettings:dockerfile: Dockerfileregistry: registry.cn-beijing.aliyuncs.comrepo:  registry.cn-beijing.aliyuncs.com/ctra_test/ctra-python-itra-scrapyauto_tag: trueinsecure: trueusername:from_secret: docker_usernamepassword:from_secret: docker_passwordtrigger:#  branch:#    - mainref:- refs/tags/*- refs/heads/master
# 添加pip缓存
caches:- pip

五、Drone & aliyun ACR

Drone CI成功编译
在这里插入图片描述

aliyun ACR 镜像成功写入
在这里插入图片描述

六、如何部署在docker环境中

1、登录阿里云Docker Registry

docker login --username=hol****@aliyun.com registry.cn-beijing.aliyuncs.com

用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

您可以在访问凭证页面修改凭证密码。
登录到你的私有镜像仓库地址

2、下载镜像

docker pull registry.cn-beijing.aliyuncs.com/ctra_test/ctra-python-itra-scrapy

可适当的清除之前的没用的镜像
新下载的镜像版本为latest,旧的镜像则为 <None>

在这里插入图片描述

3、部署镜像

docker run -d --restart always -p 5000:5000 --name itra-scrapy -v /home/logs/python:/app/logs 75d059c4d82b

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

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

相关文章

【题目】栈和队列专题

文章目录 专题一&#xff1a;栈系列1. 中缀表达式转后缀表达式&#xff08;逆波兰式&#xff09;2. 有效的括号3. 用栈实现队列4. 最小栈 专题一&#xff1a;栈系列 1. 中缀表达式转后缀表达式&#xff08;逆波兰式&#xff09; 算法原理 2. 有效的括号 题目链接 算法原理 代…

【无标题】广东便携式逆变器的澳洲安全 AS/NZS 4763

便携式逆变器的澳洲安全 AS/NZS 4763 便携式逆变器申请澳大利亚和新西兰SAA认证的时候&#xff0c;需要按照澳洲*用标准AS/NZS 4763: 2011进行测试。立讯检测安规实验室有澳洲AS/NZS 4763: 2011资质授权&#xff0c;为国内多家便携式逆变器客户成功申请澳洲SAA证书 便携式户外…

Java生成word[doc格式转docx]

引入依赖 <!-- https://mvnrepository.com/artifact/org.freemarker/freemarker --><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.32</version></dependency> doc…

Tap虚拟网卡 (草稿)

1 概述 Tap设备通常用于虚拟化场景下&#xff0c;参考如下场景&#xff1a; 图中标注了关键函数&#xff0c;以及数据流向。 tun有两个数据接口&#xff0c; file&#xff0c;给用户态使用&#xff1b;socket&#xff0c;给内核态使用&#xff0c;例如vhost 2 异步处理 图…

redis Redis::geoAdd 无效,phpstudy 如何升级redis版本

redis 查看当前版本命令 INFO SERVERwindows 版redis 进入下载 geoadd 功能在3.2之后才有的&#xff0c;但是phpstudy提供的最新的版本也是在3.0&#xff0c;所以需要升级下 所以想出一个 挂狗头&#xff0c;卖羊肉的方法&#xff0c;下载windows 的程序&#xff0c;直接替…

2023.11.27【读书笔记】|医疗科技创新流程(前言)

目录 注重价值关键要素如何解决价值问题&#xff1f;注重三个关键点价值探索价值预测价值定位 中国视角背景挑战战术 洞察过程发现需求发现需求筛选 发明概念产生概念选择 发挥战略发展商业计划 注重价值 在美国&#xff0c;医疗费用的增长率已经多年超过GDP增长率&#xff1b…

玩转大数据5:构建可扩展的大数据架构

1. 引言 随着数字化时代的到来&#xff0c;大数据已经成为企业、组织和个人关注的焦点。大数据架构作为大数据应用的核心组成部分&#xff0c;对于企业的数字化转型和信息化建设至关重要。我们将探讨大数据架构的基本要素和原则&#xff0c;以及Java在大数据架构中的角色&…

AndroidStudio - 新版本 Logcat 使用详解

最近这俩天正好有时间给自己做一下减法&#xff0c;忘记是去年还是今年&#xff0c;在升级 AndroidStudio 后使用 Logcat查看日志的方式也发生了一些变化&#xff0c;虽然一直在使用&#xff0c;但每当看到之前还未关闭 Logcat 命令行工具额昂也&#xff0c;就感觉可能还存在知…

电压驻波比

电压驻波比 关于IF端口的电压驻波比 一个信号变频后&#xff0c;从中频端口输出&#xff0c;它的输出跟输入是互异的。这个电压柱波比反映了它输出的能量有多少可以真正的输送到后端连接的器件或者设备。

uniapp实现文件预览过程

H5实现预览 <template><iframe :src"_url" style"width:100vw; height: 100vh;" frameborder"0"></iframe> </template> <script lang"ts"> export default {data() {return {_url: ,}},onLoad(option…

vue实现数字千分位格式化 如6,383,993,037,937.463

1.封装文件&#xff1a;numberToCurrency.js /**实现数字千分位格式化 如6,383,993,037,937.463 */ export function numberToCurrencyNo(value) {if (!value) return 0// 获取整数部分const intPart Math.trunc(value)// 整数部分处理&#xff0c;增加,const intPartFormat …

C语言数组(上)

# 数组的概念 数组是一组相同类型元素的集合。数组中存放的是一个或多个数据&#xff0c;但是数组中的元素个数不能为零&#xff1b;数组中存放的所有元素&#xff08;数据&#xff09;的类型必须是相同的。 数组分为一维数组和多维数组&#xff0c;多维数组一般比较多见的是二…

全球与中国仿制药市场:增长趋势、竞争格局与前景展望

仿制药是指在剂型、功效、给药方法、品质、性能特征、用途等方面与原厂药相似并已获得原厂药上市许可的药品。仿制药的价格低于品牌药。糖尿病、癌症和心血管疾病等慢性疾病的快速成长推动了仿制药市场的成长。此外&#xff0c;仿制药的实惠价格以及最新产品的批准和推出也有助…

Redis实战篇笔记(最终篇)

Redis实战篇笔记&#xff08;七&#xff09; 文章目录 Redis实战篇笔记&#xff08;七&#xff09;前言达人探店发布和查看探店笔记点赞点赞排行榜 好友关注关注和取关共同关注关注推送关注推荐的实现 总结 前言 本系列文章是Redis实战篇笔记的最后一篇&#xff0c;那么到这里…

ElasticSearch知识体系详解

1.介绍 ElasticSearch是基于Lucene的开源搜索及分析引擎&#xff0c;使用Java语言开发的搜索引擎库类&#xff0c;并作为Apache许可条款下的开放源码发布&#xff0c;是当前流行的企业级搜索引擎。 它可以被下面这样准确的形容&#xff1a; 一个分布式的实时文档存储&#xf…

血的教训---入侵redis并免密登录redis所在服务器漏洞复现

血的教训—入侵redis并免密登录redis所在服务器漏洞复现 今天就跟着我一起来入侵redis并免密登录redis所在服务器吧&#xff0c;废话不多说&#xff0c;我们直接开始吧。 这是一个体系的学习步骤&#xff0c;当然如果基础扎实的话可以继续往下面看 以下都是关联的文章&#xff…

正则表达式及文本三剑客grep sed awk

目录 正则表达式 1.元字符 2.表示次数 3.位置锚定 4.分组或其他 grep sed 语法&#xff1a; 常用选项 脚本格式 例&#xff1a; 查找11点56到12点10的日志 修改文件&#xff0c;找到文件并给其后缀加上er 提取IP地址 提取版本号 提取文件权限 awk 工作原理&…

EDA实验-----正弦信号发生器的设计(Quartus II )

目录 一、实验目的 二、实验仪器 三、实验原理 四、实验内容 五、实验步骤 六、注意事项 七、实验过程&#xff08;操作过程&#xff09; 1.定制LPM_ROM模块 2.定制LPM_ROM元件 3.计数器定制 4.创建锁相环 5.作出电路图 6.顶层设计仿真 一、实验目的 学习使用Ver…

电子印章管理系统:是什么、3个平台推荐

说到印章&#xff0c;相信看过近现代电视剧的人都见过&#xff0c;一般在订立合约时最常用到&#xff0c;双方在合约上加盖印鉴&#xff0c;即代表着合约的成立。 我小时候还见过我父亲的印章&#xff0c;只是随着时代的发展&#xff0c;印章因为不易携带&#xff0c;容易被盗…

nginx的反向代理和负载均衡

nginx的反向代理和负载均衡&#xff1a; 代理&#xff1a;客户端通过一个指定的服务器&#xff0c;访问其他服务器&#xff0c;请求和响应都由指定服务器来为客户端进行处理&#xff0c;这个指定的服务器就是代理服务器 代理的方式&#xff1a; 四层代理&#xff1a;四层就是…