-
安装 Docker 和 Docker Compose。
-
创建一个名为 docker-compose.yml 的文件,内容如下:
version: '3'
services:
jenkins:
image: jenkins/jenkins:lts
ports:
- "8080:8080"
- "50000:50000"
volumes:
- "./jenkins_home:/var/jenkins_home"
app:
build: .
ports:
- "8081:8080"
说明:
jenkins 服务使用 Jenkins 官方镜像,映射 8080 和 50000 端口,挂载本地目录 ./jenkins_home 到 Jenkins 容器的 /var/jenkins_home 目录下,以保留 Jenkins 的数据和配置。
app 服务使用当前目录中的 Dockerfile 构建镜像,映射 8081 端口。
- 创建 Dockerfile 文件,内容如下:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
说明:使用 OpenJDK 8 作为基础镜像,将构建好的 Spring Boot 应用 JAR 文件复制到容器中,并指定容器启动时执行的命令。
-
在项目根目录下执行 docker-compose up -d 命令启动容器。
-
访问 http://localhost:8080 进入 Jenkins 界面,按照提示完成安装和初始化。
-
在 Jenkins 中新建一个 Pipeline 项目,配置 Pipeline 脚本,例如:
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'mvn clean package'
}
}
stage('Deploy') {
steps {
sh 'docker build -t myapp .'
sh 'docker stop myapp || true && docker rm myapp || true'
sh 'docker run -d --name myapp -p 8081:8080 myapp'
}
}
}
}
说明:
Build 阶段使用 Maven 打包项目。
Deploy 阶段构建 Docker 镜像,并在容器中运行项目。先停止并删除已有的容器,再启动新的容器。
保存并运行 Pipeline,观察构建和部署过程。如果成功,访问 http://localhost:8081 应该能看到部署好的 Spring Boot 项目。
注意事项:
Jenkins 容器需要访问本地的 Docker 守护进程,需要将 /var/run/docker.sock 文件挂载到容器中,例如加上以下配置:
复制
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
如果是在 Windows 环境下使用 Docker,需要修改 docker-compose.yml 文件中的目录路径,例如将 ./jenkins_home 修改为 ./jenkins_home:/var/jenkins_home:z。
在实际生产环境中,需要考虑更多的安全、可维护性和可扩展性问题,例如使用 Docker Swarm 或 Kubernetes 等容器编排技术,使用 Docker 镜像仓库存储镜像,使用 Jenkins 的插件和 Pipeline 脚本库等。