diff --git a/.drone.yml b/.drone.yml index 67bbcec..5b51f2e 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,6 +1,6 @@ kind: pipeline type: docker -name: testxxx +name: default steps: # 1.maven打包gateway网关模块 @@ -19,16 +19,21 @@ steps: commands: # 开始打包maven工程 - mvn clean package -Dmaven.test.skip=true - # 将打包后的文件复制到宿主机映射目录,由于该项目打包后jar包在zeroerr_oa-admin模块下,所以这里一定要注意,每个项目都不一样。 + # 将打包后的文件复制到宿主机映射目录。gateway模块 - cp zeroerroa-gateway/target/*.jar /drone/build/gateway - cp Dockerfile/Dockerfile-gateway /drone/build/gateway - cp DockerSH/docker-gateway.sh /drone/build/gateway - cp StartSH/start-gateway.sh /drone/build/gateway - + # 将打包后的文件复制到宿主机映射目录。auth模块 - cp zeroerroa-auth/target/*.jar /drone/build/auth - cp Dockerfile/Dockerfile-auth /drone/build/auth - cp DockerSH/docker-auth.sh /drone/build/auth - cp StartSH/start-auth.sh /drone/build/auth + # 将打包后的文件复制到宿主机映射目录。system模块 + - cp zeroerroa-modules/zeroerroa-system/target/*.jar /drone/build/system + - cp Dockerfile/Dockerfile-system /drone/build/system + - cp DockerSH/docker-system.sh /drone/build/system + - cp StartSH/start-system.sh /drone/build/system - name: build docker gateway image: plugins/docker @@ -66,6 +71,23 @@ steps: - sh docker-auth.sh - docker ps + - name: build docker system + image: plugins/docker + volumes: + # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置 + - name: maven-build-system + path: /drone/build/system # 将应用打包好的Jar和执行脚本挂载出来 + - name: docker + path: /var/run/docker.sock # 挂载宿主机的docker + settings: + dockerfile: /drone/build/Dockerfile-system #这里的Dockerfile就是项目根目录里的Dockerfile,必须保证名字和内容无误 + commands: + # 定义在Docker容器中执行的shell命令 + - cd /drone/build/system + - chmod +x docker-system.sh + - sh docker-system.sh + - docker ps + volumes: # 定义流水线挂载目录,用于共享数据 - name: maven-build-gateway @@ -74,6 +96,9 @@ volumes: # 定义流水线挂载目录,用于共享数据 - name: maven-build-auth host: path: /home/zeroerr/drone/maven/build/auth # 从宿主机中挂载的目录 + - name: maven-build-system + host: + path: /home/zeroerr/drone/maven/build/system # 从宿主机中挂载的目录 - name: maven-cache host: path: /home/zeroerr/drone/maven/cache # 从宿主机中挂载的目录 diff --git a/DockerSH/docker-auth.sh b/DockerSH/docker-auth.sh index 5341822..361ca4e 100644 --- a/DockerSH/docker-auth.sh +++ b/DockerSH/docker-auth.sh @@ -13,7 +13,7 @@ echo '---------- 删除旧容器 ----------' docker rm ${app_name} echo '---------- 删除旧镜像 ----------' docker rmi ${group_name}/${app_name}:${app_version} -echo '---------- 打包新镜像 ----------' +echo '---------- 打包新镜像 ---------- 这里加了-f ${dockerfile_name} 是因为docker默认去找是Dockerfile名字的文件,如果你用了其他名字,则要加这个 ' docker build -f ${dockerfile_name} -t ${group_name}/${app_name}:${app_version} . echo '---------- 运行新镜像 ----------' docker run -p 9200:9200 --name ${app_name} \ diff --git a/DockerSH/docker-gateway.sh b/DockerSH/docker-gateway.sh index 0ef7980..1c49559 100644 --- a/DockerSH/docker-gateway.sh +++ b/DockerSH/docker-gateway.sh @@ -13,7 +13,7 @@ echo '---------- 删除旧容器 ----------' docker rm ${app_name} echo '---------- 删除旧镜像 ----------' docker rmi ${group_name}/${app_name}:${app_version} -echo '---------- 打包新镜像 ----------' +echo '---------- 打包新镜像 ----------这里加了-f ${dockerfile_name} 是因为docker默认去找是Dockerfile名字的文件,如果你用了其他名字,则要加这个' docker build -f ${dockerfile_name} -t ${group_name}/${app_name}:${app_version} . echo '---------- 运行新镜像 ----------' docker run -p 8080:8080 --name ${app_name} \ diff --git a/DockerSH/docker-system.sh b/DockerSH/docker-system.sh new file mode 100644 index 0000000..9857859 --- /dev/null +++ b/DockerSH/docker-system.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# 定义应用组名 +group_name='zeroerr' +# 定义应用名称 +app_name='system' +#定义Dockerfile名称 +dockerfile_name='Dockerfile-system' +# 定义应用版本 +app_version='latest' +echo '---------- 停止旧容器 ----------' +docker stop ${app_name} +echo '---------- 删除旧容器 ----------' +docker rm ${app_name} +echo '---------- 删除旧镜像 ----------' +docker rmi ${group_name}/${app_name}:${app_version} +echo '---------- 打包新镜像 ----------这里加了-f ${dockerfile_name} 是因为docker默认去找是Dockerfile名字的文件,如果你用了其他名字,则要加这个' +docker build -f ${dockerfile_name} -t ${group_name}/${app_name}:${app_version} . +echo '---------- 运行新镜像 ----------' +docker run -p 9201:9201 --name ${app_name} \ +-e TZ="Asia/Shanghai" \ +-v /etc/localtime:/etc/localtime \ +-d ${group_name}/${app_name}:${app_version} +echo '----start container----' diff --git a/Dockerfile/Dockerfile-system b/Dockerfile/Dockerfile-system new file mode 100644 index 0000000..806f032 --- /dev/null +++ b/Dockerfile/Dockerfile-system @@ -0,0 +1,23 @@ +# 使用 dockette/openjdk8 作为基础镜像 +FROM dockette/openjdk8 + +# 设置环境变量 +ENV SERVIECE_PORT=8080 + +# 创建目录 +RUN mkdir -p /drone/system + +# 设置工作目录 +WORKDIR /drone/system + +# 复制 start-gateway.sh 脚本到容器内 +COPY ./start-system.sh /drone/system + +# 复制 JAR 文件到容器内 +COPY ./*.jar /drone/system + +# 赋予 /drone/ 目录下所有文件可执行权限 +RUN chmod 755 -R /drone/system + +# 设置容器的入口点 +ENTRYPOINT ["/drone/system/start-system.sh"] diff --git a/StartSH/start-system.sh b/StartSH/start-system.sh new file mode 100644 index 0000000..02e391a --- /dev/null +++ b/StartSH/start-system.sh @@ -0,0 +1,8 @@ +#!/bin/sh +java -Xms512m -Xmx512m -jar /drone/system/*.jar + +if [ $? != 0 ]; then + echo Failed to start java >&2 + exit 1 +fi +