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

艺帆风顺 发布于 2025-04-03 22 次阅读


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中有一个刚刚我们创建的属于drone的webhook 

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

idea项目

【.drone.yml】文件内容

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

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

  3. name: filesystem-drone # 定义流水线名称

  4. #指定打包分支和触发事件

  5. #trigger:

  6. # branch:

  7. # - master

  8. # event:

  9. # - push

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

  11. - name: package # 流水线名称

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

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

  14. - name: maven-cache

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

  16. - name: maven-build

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

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

  19. - mvn clean package # 应用打包命令

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

  21. - cp Dockerfile /app/build/Dockerfile

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

  23. - name: build-start

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

  25. settings:

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

  27. username: root # 远程连接账号

  28. password:

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

  30. port: 22 # 远程连接端口

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

  32. script:

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

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

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

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

  37. - name: maven-build

  38. host:

  39. path: /mydata/maven/build # 从宿主机中挂载的目录

  40. - name: maven-cache

  41. host:

  42. path: /mydata/maven/cache # 从宿主机中挂载的目录

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

【Dockerfile】文件内容

  1. # 该镜像需要依赖的基础镜像

  2. FROM java:8

  3. # 将当前目录下的jar包复制到docker容器的/目录下

  4. ADD filesystem.jar /filesystem.jar

  5. # 指定docker容器启动时运行jar包

  6. #在容器启动的时候运行命令,来启动我们的项目

  7. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/filesystem.jar","-Xms128m","-Xmx128m","-c"]

  8. # 指定维护者的名字

  9. 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/ 

      版权声明:本文内容来自CSDN:do_you_like_van_游戏,遵循CC 4.0 BY-SA版权协议上原文接及本声明。本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行可。原文链接:https://blog.csdn.net/do_you_like_van_game/article/details/131208706如有涉及到侵权,请联系,将立即予以删除处理。在此特别鸣谢原作者的创作。此篇文章的所有版权归原作者所有,与本公众号无关,商业转载建议请联系原作者,非商业转载请注明出处。