• drone如何发布docker服务


    上篇主要实现了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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99

    使用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
    
    
    • 1
    • 2
    • 3
    • 4

    三 查看构建结果

    image.png

    image.png

  • 相关阅读:
    svg常用属性及动画效果
    51单片机BH1750智能补光灯台灯光强光照恒流源LED控制系统
    谈谈看法:程序员为什么越跳薪资越高?
    Linux命令(122)之rsync
    html资源提示符
    深度学习课后week3 编程( 带有一个隐藏层的平面数据分类)
    [工具推荐]截图工具 -- snipaste
    数据结构学习:Trie树
    利用DMA的触发循环实现eTMR的PWM周期计数
    一篇讲解CPU性能指标提取及源码分析
  • 原文地址:https://blog.csdn.net/huningfei/article/details/133789167