可以按照以下步骤在 GitLab 中使用 Maven 打包 Spring Boot 项目为 Docker 镜像并运行:
-
创建一个文件名为
.gitlab-ci.yml
的文件,该文件是用来定义 GitLab CI/CD 流程的文件。 -
在
gitlab-ci.yml
文件中添加以下代码:
image: maven:3.6.3-jdk-8
services:
- docker:dind
variables:
# 定义构建、提交 Docker 镜像的变量
DOCKER_IMAGE: registry.example.com/group/my-project
DOCKER_REGISTRY_USER: username
DOCKER_REGISTRY_PASSWORD: $REGISTRY_PASSWORD
# 定义镜像版本变量
IMAGE_TAG: $CI_COMMIT_SHA
# 定义构建阶段
build:
stage: build
script:
- mvn clean package -DskipTests
- docker build -t $DOCKER_IMAGE:$IMAGE_TAG .
# 定义提交镜像阶段
push:
stage: push
script:
- docker login -u $DOCKER_REGISTRY_USER -p $DOCKER_REGISTRY_PASSWORD $DOCKER_IMAGE
- docker push $DOCKER_IMAGE:$IMAGE_TAG
# 定义部署阶段
deploy:
stage: deploy
script:
- docker run -d -p 8080:8080 $DOCKER_IMAGE:$IMAGE_TAG
- 解释一下上述配置文件的几个关键点:
image
定义使用的 Docker 镜像,这里使用了 Maven 工具镜像。services
定义使用的 Docker 服务,这里使用了 Docker in Docker 服务。variables
定义了一些变量,例如 Docker 镜像名称、Docker 仓库用户名和密码等。build
定义了构建阶段,该阶段使用 Maven 打包 Spring Boot 项目,并将生成的 jar 文件打包成 Docker 镜像。push
定义了提交镜像阶段,该阶段向 Docker 仓库提交构建好的 Docker 镜像。deploy
定义了部署阶段,该阶段在 Docker 中运行部署好的 Docker 镜像。
- 然后在 GitLab 项目中进行 Push 操作,触发 CI/CD 流程。GitLab 将自动执行
.gitlab-ci.yml
中定义的流程,依次执行构建、提交镜像和部署三个阶段。