可以按照以下步骤在 GitLab 中使用 Maven 打包 Spring Boot 项目为 Docker 镜像并运行:

  1. 创建一个文件名为 .gitlab-ci.yml 的文件,该文件是用来定义 GitLab CI/CD 流程的文件。

  2. 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
  1. 解释一下上述配置文件的几个关键点:
  • image 定义使用的 Docker 镜像,这里使用了 Maven 工具镜像。
  • services 定义使用的 Docker 服务,这里使用了 Docker in Docker 服务。
  • variables 定义了一些变量,例如 Docker 镜像名称、Docker 仓库用户名和密码等。
  • build 定义了构建阶段,该阶段使用 Maven 打包 Spring Boot 项目,并将生成的 jar 文件打包成 Docker 镜像。
  • push 定义了提交镜像阶段,该阶段向 Docker 仓库提交构建好的 Docker 镜像。
  • deploy 定义了部署阶段,该阶段在 Docker 中运行部署好的 Docker 镜像。
  1. 然后在 GitLab 项目中进行 Push 操作,触发 CI/CD 流程。GitLab 将自动执行 .gitlab-ci.yml 中定义的流程,依次执行构建、提交镜像和部署三个阶段。

参考资料:
[1]
[2]

更多推荐