diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..31c450d --- /dev/null +++ b/.drone.yml @@ -0,0 +1,60 @@ +kind: pipeline +type: docker +name: venue_reservation_service + +steps: + # 1.maven打包 + - name: maven compile + pull: if-not-exists + # 构建镜像的maven+jdk选择,最好选择满足匹配你的项目版本的 + image: matderosa/maven-3.8-openjdk-17-gcc8.5 + volumes: + # maven构建缓存 + - name: maven-cache + path: /root/.m2 + # 挂载宿主机的目录 + - name: maven-build + path: /venue/build + commands: + # 开始打包maven工程 + - mvn clean package -Dmaven.test.skip=true + # 将打包后的文件复制到宿主机映射目录 + - cp target/*.jar /venue/build + - cp Dockerfile /venue/build + - cp docker.sh /venue/build + - cp start.sh /venue/build + + - name: build docker + image: plugins/docker + volumes: + # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置 + - name: maven-build + path: /venue/build # 将应用打包好的Jar和执行脚本挂载出来 + - name: docker + path: /var/run/docker.sock # 挂载宿主机的docker + settings: + dockerfile: /venue/build/Dockerfile + commands: + # 定义在Docker容器中执行的shell命令 + - cd /venue/build + - chmod +x docker.sh + - sh docker.sh + - docker ps + + +volumes: # 定义流水线挂载目录,用于共享数据 + - name: maven-build + host: + path: /home/projects/venue/maven/build # 从宿主机中挂载的目录 + - name: maven-cache + host: + path: /home/projects/venue/maven/cache + - name: docker + host: + path: /var/run/docker.sock + + +# drone执行触发器 +trigger: + branch: + - master diff --git a/Docker.sh b/Docker.sh new file mode 100644 index 0000000..31ed1c4 --- /dev/null +++ b/Docker.sh @@ -0,0 +1,22 @@ +#!/bin/sh +# 定义应用组名 +group_name='venue_reservation_service' +# 定义应用名称 ,这里的name是获取你仓库的名称,也可以自己写 +app_name=${DRONE_REPO_NAME} +# 定义应用版本 +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 9020:9020 --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 b/Dockerfile index 2c7841f..5da84e4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,27 +1,16 @@ -#指定基础镜像(一般指定程序所依赖的环境) -#本例子是构建SpringBoot,所以指定的jdk环境变量 -FROM openjdk:17 -#添加维护者信息 -MAINTAINER author:chenyuepan -MAINTAINER mail:3158614516@qq.com - -#将./hello-world.jar添加到容器的/opt目录中 -COPY ./venue_reservation_service-0.0.1-SNAPSHOT.jar /opt - -#指定dockerfile的命令在哪个目录下执行 -WORKDIR /opt - -#指定容器和外界交互的端口 -EXPOSE 9020 - -#容器运行后执行的命令(该命令在WORKDIR指定的工作目录下执行) -#注意:多个CMD指令只有最后一个会生效 -CMD java -jar venue_reservation_service-0.0.1-SNAPSHOT.jar - -#在构建镜像时执行的命令 -#我这边用它来打印java的环境变量 -RUN java -version - -#添加该镜像的元数据 -LABEL version="1.0" description="这是一个Web服务器" by="edc" - +#指定了基础镜像为 khipu/openjdk17-alpine,即使用了 OpenJDK 17 的 Alpine 版本作为基础 +FROM khipu/openjdk17-alpine +#设置了一个名为 SERVIECE_PORT 的环境变量,并将其值设为 9090 +ENV SERVIECE_PORT = 9090 +# 容器里 新建目录 thirdPlatform +RUN mkdir -p /venue/ +# 工作区 +WORKDIR /venue +# 复制操作 +COPY ./start.sh /venue/ +#将宿主机当前目录下的 *.jar 文件复制到容器的 /third_platform_admin/ 目录下 +COPY ./*.jar /venue/ +#对 /thirdPlatform/ 目录及其子目录下的所有文件赋予可执行权限 +RUN chmod 755 -R /venue/ +#设置容器的入口点为 /third_platform_admin/start.sh,即在容器启动时执行该脚本 +ENTRYPOINT ["/venue/start.sh"] diff --git a/drone.yml b/drone.yml deleted file mode 100644 index 7b6e1a0..0000000 --- a/drone.yml +++ /dev/null @@ -1,41 +0,0 @@ -kind: pipeline -type: docker -name: venue_reservation_service - -steps: - - name: build-jar # 流水线名称 - image: maven:3.8.5-openjdk-17 # 定义创建容器的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/venue_reservation_service-0.0.1-SNAPSHOT.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 diff --git a/run.sh b/run.sh index f04f100..da6ace5 100644 --- a/run.sh +++ b/run.sh @@ -1,22 +1,7 @@ -#!/bin/sh -# 定义应用组名 -group_name='nnzmr' -# 定义应用名称 -app_name='venue_reservation_service' -# 定义应用版本 -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 9020:9020 --name ${app_name} \ --e TZ="Asia/Shanghai" \ --v /etc/localtime:/etc/localtime \ --d ${group_name}/${app_name}:${app_version} -echo '----start container----' +java -Xms128m -Xmx128m -jar /thirdPlatform/*.jar --spring.profiles.active=dev + +if [ $? != 0 ]; then + echo Failed to start java >&2 + exit 1 +fi +