diff --git a/.drone.yml b/.drone.yml index dc5adb8..693b89e 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,51 +1,78 @@ -kind: pipeline -type: docker -name: mypubdemo +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镜像 -steps: - - name: build-jar # 流水线名称 - image: maven:3.8.5-openjdk-8 # 定义创建容器的Docker镜像 volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置 + - name: maven-cache - path: /root/.m2 # 将maven下载依赖的目录挂载出来,防止重复下载 - - name: maven-build - path: /app/build # 将应用打包好的Jar和执行脚本挂载出来 - commands: # 定义在Docker容器中执行的shell命令 - - mvn clean package -DskipTests=true # 应用打包 - - ls - - cd /drone/src - - ls - - cd ruoyi-admin - - ls - - cd target - - ls - - cp target/ruoyi-3.8.1.jar /app/build/ruoyi-3.8.1.jar - - cp entrypoint.sh /app/build/ - - cp Dockerfile /app/build/ - - cp run.sh /app/build/ - - name: build-docker - image: plugins/docker - volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置 + path: /root/.m2 # 将maven下载依赖的目录挂载出来,防止重复下载 + - name: maven-build + path: /app/build # 将应用打包好的Jar和执行脚本挂载出来 - - name: docker - path: /var/run/docker.sock # 挂载宿主机的docker - settings: - dockerfile: /app/build/Dockerfile + commands: # 定义在Docker容器中执行的shell命令 - - cd /app/build - - chmod +x run.sh - - sh run.sh - - docker ps + + - 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: /home/data/maven/build # 从宿主机中挂载的目录 + path: /mydata/maven/build # 从宿主机中挂载的目录 + - name: maven-cache host: - path: /home/data/maven/cache - - name: docker - host: - path: /var/run/docker.sock \ No newline at end of file + path: /mydata/maven/cache # 从宿主机中挂载的目录 \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..393a4bd --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +# 该镜像需要依赖的基础镜像 +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 \ No newline at end of file diff --git a/run.sh b/run.sh index 0ee5060..53dcf7f 100644 --- a/run.sh +++ b/run.sh @@ -1,10 +1,8 @@ -#!/bin/sh -# 定义应用组名 -group_name='demo' -# 定义应用名称 -app_name='mypubdemo' -# 定义应用版本 -app_version='latest' +app_name='filesystem-drone' +# 瀹氫箟搴旂敤鐗堟湰 +app_version='1.0.0' +# 瀹氫箟搴旂敤鐜 +#profile_active='prod' echo '----copy jar----' docker stop ${app_name} echo '----stop container----' @@ -12,11 +10,12 @@ docker rm ${app_name} echo '----rm container----' docker rmi ${group_name}/${app_name}:${app_version} echo '----rm image----' -# 打包编译docker镜像 +# 鎵撳寘缂栬瘧docker闀滃儚 docker build -t ${group_name}/${app_name}:${app_version} . echo '----build image----' -docker run -p 8080:80 --name ${app_name} \ +docker run -p 8080:8080 --name ${app_name} \ -e TZ="Asia/Shanghai" \ -v /etc/localtime:/etc/localtime \ --d ${group_name}/${app_name}:${app_version} +-v /mydata/app/${app_name}/logs:/var/logs \ +-d ${group_name}/${app_name}:${app_version} \ echo '----start container----' \ No newline at end of file