自动化部署工具 drone 部署文档 (使用于 vue java 部署 其他自行研究)

news2025/3/12 23:38:43

1.准备好docker环境

drone 官网 Drone CI – Automate Software Testing and Delivery

推荐使用宝塔傻瓜式一键安装宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板

安装好docker环境之后开始部署容器

这里用到的git版本软件是gogs,其他自己研究

docker版的gogs和实体机安装版的都适用

2.drone 容器运行

docker run -v /soft/docker/drone:/data -e DRONE_AGENTS_ENABLED=true -e DRONE_GOGS_SERVER=http://ip:3000 -e DRONE_RPC_SECRET=dronerpc666 -e DRONE_SERVER_HOST=ip:3080 -e DRONE_SERVER_PROTO=http -e DRONE_USER_CREATE=username:demon471,admin:true -e TZ="Asia/Shanghai" -p 3080:80 --restart=always --detach=true --name=drone drone/drone

-e DRONE_GOGS_SERVER=http://ip:3000 此处为gogs的访问地址
-e DRONE_RPC_SECRET=dronerpc666 dronerpc666 非固定但是部署drone-runner- 需要参数一致
-e DRONE_SERVER_HOST=ip:3080 配置drone的访问地址
-e DRONE_USER_CREATE=username:gogs,admin:true 设置管理员账号最好和gogs的管理员一致(也可以自作更改)

3.drone-runner 容器运行

docker run -d -v /var/run/docker.sock:/var/run/docker.sock  -e DRONE_RPC_PROTO=http -e DRONE_RPC_HOST=ip:3080 -e DRONE_RPC_SECRET=dronerpc666 -e DRONE_RUNNER_CAPACITY=2 -e DRONE_RUNNER_NAME=runner-docker -e TZ="Asia/Shanghai" -p 3070:3000--restart always --name drone-runner drone/drone-runner-docker

-e DRONE_RPC_HOST=ip:3080 drone的访问地址
-e DRONE_RPC_PROTO=http 有证书可以是https
-e DRONE_RPC_SECRET=dronerpc666 需要和drone的配置一样

注意linux放行端口

页面输入http://ip:3080 登录你的gogs账号 建议超级管理员

1)访问ip:3080即可访问登录drone,就可以看到项目,如果没有可以点击sync同步gogs中的代码即可。

 2)点击同步到的项目,可以设置drone中的项目属性

3)返回gogs中的项目设置可以看到webhook中有一个刚刚我们创建的属于dronewebhook 

4.部署过程(一)主要文件以及目录结构: 

idea项目

.drone.yml】文件内容

kind: pipeline # 定义对象类型,还有secret和signature两种类型

type: docker # 定义流水线类型,还有kubernetes、exec、ssh等类型

name: filesystem-drone # 定义流水线名称
#指定打包分支和触发事件
#trigger:
#  branch:
#    - master
#  event:
#    - push


steps: # 定义流水线执行步骤,这些步骤将顺序执行

  - name: package # 流水线名称

    image: maven:3-jdk-8 # 定义创建容器的Docker镜像

    volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置

      - name: maven-cache

        path: /root/.m2 # 将maven下载依赖的目录挂载出来,防止重复下载

      - name: maven-build

        path: /app/build # 将应用打包好的Jar和执行脚本挂载出来

    commands: # 定义在Docker容器中执行的shell命令

      - mvn clean package # 应用打包命令

      - cp target/filesystem.jar /app/build/filesystem.jar

      - cp Dockerfile /app/build/Dockerfile

      - cp run.sh /app/build/run.sh



  - name: build-start

    image: appleboy/drone-ssh # SSH工具镜像

    settings:

      host: 服务器(宿主机ip) # 远程连接地址

      username: root # 远程连接账号

      password:

        from_secret: ssh_password # 从Secret中读取SSH密码

      port: 22 # 远程连接端口

      command_timeout: 5m # 远程执行命令超时时间

      script:

        - cd /mydata/maven/build # 进入宿主机构建目录

        - chmod +x run.sh # 更改为可执行脚本

        - ./run.sh # 运行脚本打包应用镜像并运行



volumes: # 定义流水线挂载目录,用于共享数据

  - name: maven-build
    host:
      path: /mydata/maven/build # 从宿主机中挂载的目录

  - name: maven-cache
    host:
      path: /mydata/maven/cache # 从宿主机中挂载的目录

查看地址:
其中 ssh_password需要在drone中的项目配置

Dockerfile】文件内容

# 该镜像需要依赖的基础镜像
FROM java:8
# 将当前目录下的jar包复制到docker容器的/目录下
ADD filesystem.jar /filesystem.jar
# 指定docker容器启动时运行jar包
#在容器启动的时候运行命令,来启动我们的项目
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/filesystem.jar","-Xms128m","-Xmx128m","-c"]
# 指定维护者的名字
MAINTAINER demon471

 run.sh

app_name='filesystem-drone'
# 瀹氫箟搴旂敤鐗堟湰
app_version='1.0.0'
# 瀹氫箟搴旂敤鐜
#profile_active='prod'
echo '----copy jar----'
docker stop ${app_name}
echo '----stop container----'
docker rm ${app_name}
echo '----rm container----'
docker rmi ${group_name}/${app_name}:${app_version}
echo '----rm image----'
# 鎵撳寘缂栬瘧docker闀滃儚
docker build -t ${group_name}/${app_name}:${app_version} .
echo '----build image----'
docker run -p 8080:8080 --name ${app_name} \
-e TZ="Asia/Shanghai" \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/${app_name}/logs:/var/logs \
-d ${group_name}/${app_name}:${app_version} \
echo '----start container----'

部署过程(二)进行测试打包:

打包成功内容

 

 后言:如果发现maven打包很慢可以通过修改settings.xml来提速位置/mydata/maven/cache,再次重新打包就

Docker市场 https://hub.docker.com/ 

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

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

相关文章

Linux内存管理 —— 文件系统缓存和匿名页的交换

转自:https://www.cnblogs.com/wangshaowei/p/14089132.html 文件页 内存回收,也就是系统释放掉可以回收的内存,比如缓存和缓冲区,就属于可回收内存。它们在内存管理中,通常被叫做文件页(File-backed Pag…

B045-jQuery案例实战BootStrap

目录 一、BootStrap概述二、BootStrap使用1.起步1.下载或放入BootStrap文件到本地工程里2.在html代码中引入1个css文件和两个js文件3.复制模板代码到本地html文件里会自动应用成bootStrap图样中的效果0.实战案例-环境准备0.实战案例-基本模板 2.布局容器3.栅格系统4.常用组件表…

echarts里type为custom,自定义配置renderItem为柱状形状

echarts里type为custom,自定义配置renderItem为柱状形状 echarts里type为custom,自定义配置renderItem为柱状形状 echarts里type为custom,自定义配置renderItem为柱状形状 主要功能:文本超过柱状形状就隐藏否则就显示,…

风口上的AIGC,技术人才动不动就年薪百万?

2023年,职场人都在讨论什么? 自今年3月以来,随着ChatGPT应用持续走俏,AIGC领域抢人大战盛况空前。随之而来的便是“AI取代人类”“10亿打工人被革命”,AI的发展速度和步伐,超乎我们预期,也影响…

MySQL - 第0节 - MySQL在Centos 7环境安装

1.安装前说明 • 安装与卸载过程中,用户全部切换成为root,一旦安装,普通用户也能够使用。 • 初期练习,mysql不进行用户管理,全部使用root进行,后面学了用户管理,再考虑新建普通用户。 注&#…

互联网医院资质申请条件|互联网医院申请流程

互联网医院是医疗行业应用互联网技术的一种创新形态,它为患者提供便捷的医疗服务,改善了医疗资源的不足和分散情况。在中国,互联网医院的发展也越来越受到重视,互联网医院牌照的申请流程和需要的资料也成为了关注的焦点。 一、互…

SpringCloud 中各微服务使用 springcloud-config 获取配置文件时,配置信息无法实时刷新

文章目录 1、引入actuator监控2、修改 yml3、添加注解 RefreshScope4、业务操作5、发送通知,即可生效6、思考 使用 springcloud-config 作为 服务配置 管理时, 当对 git 上的配置进行修改后, 各微服务客户端 配置无法 实时刷新,需…

【Flutter】Flutter 切换语言 当前页面不刷新

文章目录 一、前言二、Flutter 多语言支持的基础知识三、如何在 Flutter 中设置语言四、如何在 Flutter 中切换语言五、代码示例六、完整代码七、总结 一、前言 大家好,今天我们要探讨的主题是如何在 Flutter 中切换语言,而不需要刷新当前页面。这是一个…

vue-element-admin - 最新完美解决项目是英文的问题,将英文变成中文的汉化处理详细教程(克隆完项目后不是中文的解决方法)

前言 网上的教程(并且都是好几年前的了)克隆运行后界面文字全都是英文的,如果您想要中文汉语版本请使用本文的方案。 本文 解决了克隆运行 vue-element-admin 项目后,默认是英文的问题!将语言设置为中文的详细教程! 官方文档说的很晦涩,您可以按照本教程步骤进行操作即…

log4j配置说明

目录&#xff1a; 1、 引入jar包使用 2、 使用 3、 配置文件 4、 配置 5、 说明 说明&#xff1a;2015年9月&#xff0c;Apache软件基金业宣布&#xff0c;Log4j不在维护&#xff0c;建议所有相关项目升级到Log4j2。 1.引入jar包使用 <dependency><groupI…

vscode 调试

目录 准备 GDB 调试方法 问题 准备 然后点击 文件-打开文件夹&#xff0c;找到创建的代码路径&#xff0c;确定后&#xff0c;在左侧的资源管理器可以看到代码文件。 第一次运行需要安装 c 的扩展&#xff0c;在扩展页面中&#xff0c;安装 C/C 编译注意一定要加上 -g 指令…

SpringBoot项目配置方式及优先级

说明&#xff1a;SpringBoot支持以下五种方式配置方式&#xff0c;例如将项目的Tomcat端口从8080&#xff0c;更改为9000&#xff0c;可以使用如下方式配置 【方式一】命令行参数 在启动窗口&#xff0c;鼠标右键&#xff0c;选择“Edit Configurations”&#xff0c;在弹出来…

开会糟透了?试试无声会议吧

引言 无声会议(Silent Meeting) 是一种已被成功实践但却鲜有公开资料的开会方法&#xff0c;本文会探寻下它的有趣历史&#xff0c;并介绍如何通过它的小小改变让会议变得不再糟糕。 文档是无声会议的核心基础&#xff0c;本文会引出 Coda 和 Mojidoc(妙记多) 这两款让你的会…

泛微数字化国有资产管理平台,以智能增效能

2021年国务院发布的《行政事业性国有资产管理条例》中要求应当建立健全行政事业性国有资产管理机制&#xff0c;加强对本级行政事业性国有资产的管理。 随着数字化转型的深入&#xff0c;越来越多的行政事业单位、国有企业运用数字化的理念、思路、方法&#xff0c;以智能增效…

AI工具助力创意与写作:19岁小伙每月赚3万,学会这些你也能轻松做到!

导语&#xff1a;在数字时代&#xff0c;人工智能为我们提供了许多创新的工具和资源&#xff0c;助力我们在各个领域实现创意和写作的目标。本文将介绍五款热门的AI工具&#xff1a;Copyai、Flikiai、Notion、TomeAl和Writesonic&#xff0c;它们分别在写作、视频配音、文本编辑…

Java调用Midjourney进行AI画图原生版抓包实现支持中文

用途介绍 Midjourney是一个目前优秀的AI画图工具&#xff0c;不挂梯无法直接访问 本代码主要用于搭建镜像站使用 适合人群 本代码不适合新手&#xff0c;建议使用过okhttp、且具有二开能力的同学使用~ 实现原理 通过调用发送信息接口发送请求&#xff0c;通过轮询房间消息…

【2023最全教程】Web自动化测试怎么做?Web自动化测试的详细流程和步骤

一、什么是web自动化测试 自动化&#xff08;Automation&#xff09;是指机器设备、系统或过程&#xff08;生产、管理过程&#xff09;在没有人或较少人的直接参与下&#xff0c;按照人的要求&#xff0c;经过自动检测、信息处理、分析判断、操纵控制&#xff0c;实现预期的目…

Spring @Autowired注入太坤肋了 我们自己写一个

1、 背景 众所周知该注解是Spring中用于依赖注入的注解&#xff0c;但是该注解只是简单根据类型的注入&#xff0c; 并且如果该类型存在多个实现类的情况下无法抉择具体哪一个实现类就会抛出错误&#xff0c;除非搭配Qualifier注解然后使用硬编码的方式去指定Bean的名字去抉择…

8年测试岗总结,软件测试常见面试题+答案,轻松避坑...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、介绍一下测试流…

JAVA开发与运维(怎么通过docker部署微服务jar包)

目标&#xff1a; 通过docker的方式部署微服务。 一、背景&#xff1a; 我们通过java开发的微服务可以打成jar包&#xff0c;我们可以直接通过裸机部署&#xff0c;也可以通过docker来部署&#xff0c;本文介绍通过docker来部署微服务。 二、首先我们介绍一下docker的发展过程…