drone如何发布docker服务
  XJjnJFN1x2Qb 2023年11月02日 65 0

上篇主要实现了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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: 初识k8s 下一篇: Oracle Database Link的使用
  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  wwLZeziuqjLR   2023年12月11日   30   0   0 Dockercentos
  MCWYWqSAMsot   2023年12月11日   31   0   0 Docker
  LE2wsiBPlOhg   2023年12月06日   31   0   0 Dockercentos
  DnoStTHsc0vp   2023年12月11日   24   0   0 Docker
  wwLZeziuqjLR   2023年12月08日   99   0   0 Dockercentosbash
  wwLZeziuqjLR   2023年12月07日   33   0   0 Dockercentos