From 29faee898f8ebd83a45de2d3920d66b2eef13db0 Mon Sep 17 00:00:00 2001 From: zeiss Date: Sun, 24 Mar 2024 23:07:05 +0800 Subject: [PATCH] drone file --- .drone.yml | 44 ++++++++++++++++++++++++++++++++++++++++++++ Dockerfile | 30 ++++++++++++++++++++++++++++++ run.sh | 25 +++++++++++++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 .drone.yml create mode 100644 Dockerfile create mode 100644 run.sh diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..916d737 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,44 @@ +kind: pipeline +type: docker +name: game + +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 # 应用打包命 + - cp target/game.jar /app/build/game.jar + - cp Dockerfile /app/build/ + - cp run.sh /app/build/ + - name: build-docker # 流水线名称 + image: plugins/docker + volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置 + - 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 +volumes: # 定义流水线挂载目录,用于共享数据 + - name: maven-build + host: + path: /home/docker/drone/maven/build # 从宿主机中挂载的目录 + - name: maven-cache + host: + path: /home/docker/drone/maven/cache + - name: docker + host: + path: /var/run/docker.sock + + + # 链接:https://juejin.cn/post/7153173983335022605 diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7e73a0b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,30 @@ +#指定基础镜像(一般指定程序所依赖的环境) +#本例子是构建SpringBoot所以我指定的jdk环境变量 +FROM openjdk:8 + +#添加维护者信息 +MAINTAINER author:leizk +MAINTAINER mail:appler1998@qq.com + +#将./hello-world.jar添加到容器的/opt目录中 +COPY ./game.jar /opt + +#指定dockerfile的命令在哪个目录下执行 +WORKDIR /opt + +#指定容器和外界交互的端口 +EXPOSE 8080 + +#容器运行后执行的命令(该命令在WORKDIR指定的工作目录下执行) +#注意:多个CMD指令只有最后一个会生效 +CMD java -jar game.jar + +#在构建镜像时执行的命令 +#我这边用它来打印java的环境变量 +RUN java -version + +#添加该镜像的元数据 +LABEL version="1.0" description="这是一个Web服务器" by="edc" + + +# 链接:https://juejin.cn/post/7153173983335022605 diff --git a/run.sh b/run.sh new file mode 100644 index 0000000..fa70a07 --- /dev/null +++ b/run.sh @@ -0,0 +1,25 @@ +#!/bin/sh +# 定义应用组名 +group_name='nnzmr' +# 定义应用名称 +app_name='game' +# 定义应用版本 +app_version='latest' +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 \ +-d ${group_name}/${app_name}:${app_version} +echo '----start container----' + + +# 链接:https://juejin.cn/post/7153173983335022605