pipeline { agent { dockerfile { // 使用当前目录下的 Dockerfile.buildagent filename "Dockerfile.buildagent" } } tools { maven 'M3' // 必须在 Jenkins → Manage Jenkins → Global Tool Configuration 中配置过 } environment { APP_NAME = "sczx_web" DOCKER_IMAGE = "${APP_NAME}:latest" CONTAINER_NAME = "${APP_NAME}-container" } stages { stage('Checkout') { steps { echo "📦 正在拉取代码..." git branch: 'master', url: 'http://115.190.8.52:3000/sczx_group/sczx_web.git' } } stage('Build with Maven') { steps { echo "🛠️ 正在使用 Maven 构建..." sh ''' mvn clean package -s settings.xml ''' } } stage('Check Jar File') { steps { sh 'ls -la ruoyi-admin/target/' // 确保 jar 文件存在 } } // 检查是否可以使用宿主机docker stage('Check Docker') { steps { sh 'which docker && docker --version' } } stage('Build Docker Image') { steps { echo "🐋 正在构建 Docker 镜像..." script { // 使用宿主机的 docker,不在构建容器中执行 docker build sh 'docker build -t $DOCKER_IMAGE .' } } } stage('Stop Old Container') { steps { echo "🛑 正在停止旧的容器(如果存在)..." sh ''' if [ "$(docker ps -f 'name=sczx_web-container' --format '{{.Status}}')" ]; then docker stop sczx_web-container docker rm sczx_web-container fi ''' } } stage('Run New Container') { steps { echo "🟢 正在运行新的容器..." sh """ docker run -d \ --name \${CONTAINER_NAME} \ --network sczx-net \ -p 8098:8098 \ -e JAVA_OPTS="-Xms256m -Xmx512m -Duser.timezone=Asia/Shanghai" \ --restart always \ \${DOCKER_IMAGE} """ } } } post { success { echo "🎉 构建成功!" } failure { echo "❌ 构建失败,请检查日志!" } } }