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

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中的代码即可。

自动化部署工具 drone 部署文档 (使用于 vue java 部署 其他自行研究)_第1张图片

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

自动化部署工具 drone 部署文档 (使用于 vue java 部署 其他自行研究)_第2张图片

自动化部署工具 drone 部署文档 (使用于 vue java 部署 其他自行研究)_第3张图片

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

自动化部署工具 drone 部署文档 (使用于 vue java 部署 其他自行研究)_第4张图片

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

idea项目

自动化部署工具 drone 部署文档 (使用于 vue java 部署 其他自行研究)_第5张图片

.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中的项目配置

自动化部署工具 drone 部署文档 (使用于 vue java 部署 其他自行研究)_第6张图片

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----'

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

自动化部署工具 drone 部署文档 (使用于 vue java 部署 其他自行研究)_第7张图片

打包成功内容

 自动化部署工具 drone 部署文档 (使用于 vue java 部署 其他自行研究)_第8张图片

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

自动化部署工具 drone 部署文档 (使用于 vue java 部署 其他自行研究)_第9张图片

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

你可能感兴趣的:(自动化,docker,运维)