在Java项目开发中,持续集成和自动化部署已经成为提升团队效率的标配能力。传统的手动打包、上传服务器、部署流程不仅耗时耗力,还容易因人为操作失误导致生产环境事故。这套Arbess速成方案通过整合GitPuk的代码托管能力和Docker的容器化部署,实现了从代码提交到生产环境上线的全流程自动化。
我最近在团队内部落地了这套方案,将原本需要30分钟的手动部署流程缩短到5分钟内完成,且完全避免了人为操作风险。特别适合中小型Java团队快速搭建自己的CI/CD流水线,无需复杂的基础设施投入。
重要提示:所有工具安装后务必验证版本兼容性。遇到过Docker 18.09与新版Docker Compose不兼容导致构建失败的情况。
bash复制# 本地初始化Git仓库示例
git init
git remote add origin git@gipuk.com:yourname/project.git
git branch -M main
在pom.xml中需要添加以下关键配置:
xml复制<properties>
<docker.image.prefix>yourprefix</docker.image.prefix>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.13</version>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<tag>${project.version}</tag>
</configuration>
</plugin>
</plugins>
</build>
dockerfile复制FROM amazoncorretto:11
VOLUME /tmp
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
经验之谈:
在仓库设置中添加Webhook:
groovy复制pipeline {
agent any
stages {
stage('Checkout') {
steps {
git branch: 'main',
credentialsId: 'gitpuk-ssh',
url: 'git@gipuk.com:yourname/project.git'
}
}
stage('Build') {
steps {
sh 'mvn clean package -DskipTests'
}
}
stage('Docker Build') {
steps {
sh 'mvn dockerfile:build'
}
}
stage('Deploy') {
steps {
sh 'docker-compose up -d --no-deps --build service-name'
}
}
}
}
推荐使用docker-compose实现简易蓝绿部署:
yaml复制version: '3.8'
services:
app_blue:
image: your-image:1.0
ports:
- "8080:8080"
networks:
- appnet
app_green:
image: your-image:1.1
ports:
- "8081:8080"
networks:
- appnet
nginx:
image: nginx:1.21
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- app_blue
- app_green
在Dockerfile中添加健康检查指令:
dockerfile复制HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost:8080/actuator/health || exit 1
问题1:Maven依赖下载失败
问题2:Docker构建内存不足
问题1:端口冲突
问题2:镜像拉取失败
在Jenkinsfile中添加缓存配置:
groovy复制stage('Build') {
steps {
sh '''
mkdir -p $HOME/.m2/repository
docker run -v $HOME/.m2:/root/.m2 \
-v $WORKSPACE:/app \
-w /app maven:3.6.3-jdk-11 \
mvn clean package -DskipTests
'''
}
}
优化后的Dockerfile:
dockerfile复制FROM maven:3.6.3-jdk-11 AS build
COPY src /usr/src/app/src
COPY pom.xml /usr/src/app
RUN mvn -f /usr/src/app/pom.xml clean package
FROM amazoncorretto:11
COPY --from=build /usr/src/app/target/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
这套方案在实际项目中经过验证,将部署频率从每周1次提升到每天3-5次。最关键的是通过标准化流程降低了运维复杂度,新成员入职后也能快速上手部署工作。建议初次实施时先在一个非关键业务上进行全流程演练,等团队熟悉后再推广到核心系统。