diff --git a/DockerFile b/DockerFile new file mode 100644 index 0000000..7f35373 --- /dev/null +++ b/DockerFile @@ -0,0 +1,14 @@ +# 使用官方 OpenJDK 作为基础镜像 +FROM eclipse-temurin:17-jre + +# 设置工作目录 +WORKDIR /app + +# 拷贝打包好的 JAR 文件到容器 +COPY target/myapp.jar app.jar + +# 暴露应用运行的端口 +EXPOSE 8081 + +# 启动应用 +ENTRYPOINT ["java", "-jar", "app.jar"] diff --git a/Jenkinsfile b/Jenkinsfile index ee29d03..69cd791 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -2,13 +2,44 @@ pipeline { agent { docker { image 'maven:3.9.6-eclipse-temurin-17' - args '-v /root/.m2:/root/.m2' + args '-v /root/.m2:/root/.m2' } } + environment { + IMAGE_NAME = 'LPT:0.0' + CONTAINER_NAME = 'LPT' + HOST_PORT = '8081' + CONTAINER_PORT = '8081' + } stages { stage('Build') { steps { - sh 'mvn -B -DskipTests clean package' + sh 'mvn -B -DskipTests clean package' + } + } + + stage('Build Docker Image') { + steps { + script { + // 切换到宿主环境调用 docker 命令 + docker.image('docker:24.0.7-cli').inside('--entrypoint="" -v /var/run/docker.sock:/var/run/docker.sock -v $PWD:/workspace -w /workspace') { + sh ''' + docker build -t $IMAGE_NAME . + ''' + } + } + } + } + + stage('Run Docker Container') { + steps { + script { + // 先尝试删除旧容器(如果存在) + sh ''' + docker rm -f $CONTAINER_NAME || true + docker run -d --name $CONTAINER_NAME -p $HOST_PORT:$CONTAINER_PORT $IMAGE_NAME + ''' + } } } }