drone如何发布docker服务

news2025/2/23 17:49:49

上篇主要实现了drone在物理机上进行发布程序,这次介绍drone如何发布docker类型的服务。

一 drone.yml文件配置

前提:需要提前在drone里添加文件里面所引用的密钥

kind: pipeline # 定义对象类型,还有secret和signature两种类型
type: docker # 定义流水线类型,还有kubernetes、exec、ssh等类型
name: drone-miaosha # 定义流水线名称

steps: # 定义流水线执行步骤,这些步骤将顺序执行
  - name: build-package # 流水线名称
    image: maven:3.8.4 # 定义创建容器的Docker镜像
    volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置
      - name: maven-build
        path: /root/.m2 # 将应用打包好的Jar和执行脚本挂载出来
    
    commands:
      - mvn clean install
      # 将打包后的jar包,拷贝到挂载目录
      - cp /root/.m2/repository/com/huningfei/demo/0.0.1-SNAPSHOT/*.jar  ./
      

            
# 构建docker镜像并推送
  - name: build and push image
    pull: if-not-exists # 如果镜像不存在则拉取,免去每次都要重新下载
    image: plugins/docker #选择docker:dind镜像
    volumes:
    - name: docker-sock
      path: /var/run/docker.sock #映射宿主机Docker
    settings:
      registry: registry.cn-hangzhou.aliyuncs.com
      repo: registry.cn-hangzhou.aliyuncs.com/huningfei/welcome
      tags: latest
      dockfile: ./Dockerfile
      username:
        from_secret: docker_username
      password:
        from_secret: docker_password
   
      
      
     # 步骤3 使用ssh访问主机,拉去镜像并运行部署
  - name: deploy
    pull: if-not-exists # 如果镜像不存在则拉取,免去每次都要重新下载
    image: appleboy/drone-ssh 
    settings:
   # 需要部署的主机地址
      host: 192.168.2.45
   # 主机ssh端口
      port: 22
    # 主机登陆用户名
      username: root
      password: 
    # 从drone仓库配置中秘密空间读取密码
        from_secret: ssh_pwd
      script:
        - echo "=========暂停并删除旧容器========"
        - docker stop test-demo && docker rm test-demo
        - echo "=========删除旧镜像============="
        - docker rmi registry.cn-hangzhou.aliyuncs.com/huningfei/welcome:latest 
        - echo "========从harbor拉取最新镜像========"
        - docker pull registry.cn-hangzhou.aliyuncs.com/huningfei/welcome:latest 
        - echo "===============运行镜像=========="
        - docker run --name test-demo -p 8081:8081 -d registry.cn-hangzhou.aliyuncs.com/huningfei/welcome:latest
        - echo "========部署成功========"                                                     
  

 
  - name: notify      # 步骤4 部署完成,邮件通知
    pull: if-not-exists # 如果镜像不存在则拉取,免去每次都要重新下载
    image: drillster/drone-email
    settings:
      recipients_only: true # 只发送给指定邮件收件人,不默认发送给流水线创建人
      host: smtp.qq.com      #SMTP服务器 例如 smtp.qq.com
      port: 465   #SMTP服务端口  例如QQ邮箱端口465
      subject: "Drone Build Complete!"
      username:
        from_secret: qqmail_username
      password:
        from_secret: qqmail_pwd
      from:
        from_secret: qqmail_username
      recipients: huningfei@126.com           #收件人邮箱
    when: #执行条件
      status:
        - success
        - changed
        - failure
volumes: # 定义流水线挂载目录,用于共享数据
  - name: maven-build
    host:
      path: /home/mvn/.m2   #jar包目录可以修改从宿主机中挂载的目录
      
volumes:
  - name: docker-sock
    host:
      path: /var/run/docker.sock

# 可限制哪些分支可以推送自动CICD
trigger:
  branch:
    - master

使用plugins/docker 这个镜像,会自动构建,更改tag,然后上传到镜像仓库,一切都是自动的

二 dockerfile内容

FROM openjdk:8
COPY target/demo-0.0.1-SNAPSHOT.jar  /demo-0.0.1-SNAPSHOT.jar
CMD java -jar /demo-0.0.1-SNAPSHOT.jar

三 查看构建结果

image.png

image.png

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

联盟链学习笔记-网络的创建

联盟链学习笔记 初始网络 下图是初始网络网络N的参考图 排序服务 在定义 网络 N 的时候,第一件事情就是定义一个 排序服务O4。O4 最初被配置并且由组织 R4 的一个管理员来启动,并且由 R4 管理。配置 NC4 包含了描述网络管理能力初始集合的规则。最初…

计算机专业学生实习的一条明路

当计算机专业的学生毕业后学习嵌入式开发优势也会非常的明显。计算机专业提供了坚实的编程基础、数据结构和算法知识,这些都是嵌入式开发所需要的基本技能。视频后方有免费的嵌入式学习资料,按需自取。此外,对操作系统和系统编程的了解也为嵌…

大语言模型之十七-QA-LoRA

由于基座模型通常需要海量的数据和算力内存,这一巨大的成本往往只有巨头公司会投入,所以一些优秀的大语言模型要么是大公司开源的,要么是背后有大公司身影公司开源的,如何从优秀的开源基座模型针对特定场景fine-tune模型具有广大的…

python 如何获取url的名称

一、使用os模块 os模块是Python内置的一个操作系统接口模块,提供了许多与操作系统相关的函数和变量。其中,os.path模块用于处理路径相关的操作,包括文件名、目录名等。 os.path.basename()函数可以用来获取路径中的文件名部分 imp…

【考研数学】概率论与数理统计 —— 第四章 | 随机变量的数字特征

文章目录 一、随机变量的数学期望1.1 概念1. 一维离散型随机变量的数学期望2. 一维连续型随机变量的数学期望3. 二维离散型随机变量的数学期望4. 二维连续型随机变量的数学期望 1.2 数学期望的性质 二、随机变量的方差2.1 概念2.2 计算公式2.3 方差的性质2.4 常见随机变量的数学…

自己动手写PBR

下面的shader参照博客修改而成:改动的地方用此颜色表示 代码参照: unity build-in管线中的PBR材质Shader分析研究_郭大钦的博客-CSDN博客_shader 支持pbr材质以及cubemap unity build-in管线中的PBR材质Shader分析研究_bulit-in pbr-CSDN博客 最终效果如下:左边是手写的,右…

多个扇形元素绕圆旋转

效果图 这种效果有很多方案,最后选择了一个比较简单的方案,就是一个position: relative;的 div 。包裹5个position: absolute;的div。 通过旋转,调整5个div的 top 与 left,而产生弧度,并使中心点都指向圆心。 黄色扇形…

实施运维03(在虚拟机上安装winServer2008系统)

新建虚拟机(一直下一步) 新建成功后选择镜像(右键设置,选择CD/DVD,选择使用IOS镜像文件,浏览选择2008镜像打开) 安装2008版本系统(一直下一步) 修改密码---设置密码 与电脑远程连…

简易LDO设计(包含原理图、PCB和实验)

一、前置知识 ①该电路是通过三极管(BJT)来实现的,所以需要知晓三极管的工作原理和特性。 ②三极管有三种状态:放大、饱和、截止。本文是利用三极管的放大状态来模拟LDO芯片的功能。 二、原理图 ①稳压二极管要想稳定到某个电压范…

【html】利用生成器函数和video元素,取出指定时间的视频画面

简言 有的时候想截取视频某一秒的视频画面。 手动截取操作麻烦,还得时刻关注视频播放时间。 于是,我搞出来了一个根据视频自动截取特定时间描述的页面。 效果 实现步骤 获取视频对象根据视频时长生成时间选择表单根据表单选择的时间和视频地址&#x…

钢筋智能测径仪 光圆与带肋钢筋均可检测!

在一个大规模、高效、连续的工业生产中,制造业正朝着自动化方向快速优化发展,这种自动化的生产需要快速、准确地分析控制生产工艺中的参数,超差及时提示,为操作工对工厂的运行和自我调节做出快速反应,人工操作越来越不…

智能井盖传感器扣好“城市纽扣”,让市民脚下更有安全感

随着城市化进程的快速推进,城市基础设施的维护和管理面临着日益严峻的挑战。作为城市生命线的重要组成部分,城市井盖在保障城市安全和稳定运行方面具有举足轻重的地位。然而,日益繁重的城市交通压力使得井盖的维护和管理问题逐渐显现。 城市井…

【网络编程】Linux网络编程基础与实战第一弹——网络基础

这里写目录标题 网络基础什么是协议典型协议 分层模型OSI七层模型TCP/IP四层模型 网络应用程序设计模式优缺点具体体现: 网络基础 什么是协议 从应用的角度出发,协议可理解为“一组规则”,是数据传输和数据的解释的规则。 假设,…

(echarts)折线图封装相关总结及使用

(echarts)折线图封装相关总结及使用 一、封装组件lineCharts.vue <template><div :id"id" :class"className" :style"{ height: height, width: width }" /> </template><script> import echarts from "echarts&q…

python自动化办公之文件整理脚本详解

今天讲解文件整理脚本的实现过程。这是一个很有用的技能&#xff0c;可以帮助你管理你的电脑上的各种文件。需求如下&#xff1a; 需求内容&#xff1a;给定一个打算整理的文件夹目录&#xff0c;这个脚本可以将该目录下的所有文件都揪出来&#xff0c;并且根据后缀名归类到不同…

苍穹外卖(三) 员工分页及技术实现细节

2. 员工分页查询 2.1 需求分析和设计 2.1.1 产品原型 2.1.2 接口设计 2.2 代码开发 2.2.1 设计DTO类 根据请求参数进行封装 2.2.2 封装PageResult 后面所有的分页查询&#xff0c;统一都封装为PageResult对象。 员工信息分页查询后端返回的对象类型为: Result 2.…

【Redis】渐进式遍历

scan命令渐进式遍历 Redis使⽤scan命令进⾏渐进式遍历键&#xff0c;进⽽解决直接使⽤keys获取键时可能出现的阻塞问题。每次scan命令的时间复杂度是O(1)&#xff0c;但是要完整地完成所有键的遍历&#xff0c;需要执⾏多次scan。 SCAN 以渐进式的⽅式进⾏键的遍历。 SCAN…

C# Onnx Yolov8 Detect 涉黄检测

效果 项目 检测类别 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; usi…

Python批量测试IP端口GUI程序(Tkinter)

一、实现样式 批量IP与端口中间用“,”分割&#xff0c;点击Telnet进行测试&#xff0c;前提是你电脑安装了telnet客户端&#xff0c;Clear按钮用来清空文本框。 二、核心点 1、使用Tkinter来制作桌面GUI页面 2、使用telnetlib模块测试telnet端口 三、困难点 1、测试结果…

SpringBootCMS漏洞复现分析

SpringBootCMS&#xff0c;极速开发&#xff0c;动态添加字段&#xff0c;自定义标签&#xff0c;动态创建数据库表并crud数据&#xff0c;数据库备份、还原&#xff0c;动态添加站点(多站点功能)&#xff0c;一键生成模板代码&#xff0c;让您轻松打造自己的独立网站&#xff…