前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot 应用的 GitLab CI/CD Docker 部署全过程

Spring Boot 应用的 GitLab CI/CD Docker 部署全过程

原创
作者头像
種法龍
发布2024-01-02 23:53:34
3470
发布2024-01-02 23:53:34
举报
文章被收录于专栏:未知未知

下面是每个步骤的详细说明和示例代码:

1. 编写Spring Boot应用程序代码

创建一个简单的Spring Boot应用程序,例如一个Hello World REST API。

代码语言:java
复制
// HelloWorldController.java

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class HelloWorldController {

    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, World!";
    }
}

2. 创建.gitlab-ci.yml文件,定义CI/CD流水线配置

在项目根目录下创建.gitlab-ci.yml文件。

代码语言:yaml
复制
stages:
  - test
  - build
  - deploy

variables:
  DOCKER_IMAGE_NAME: registry.example.com/my-spring-boot-app
  TAG: $CI_COMMIT_SHORT_SHA

test:
  stage: test
  script:
    - ./mvnw test

build:
  stage: build
  script:
    - ./mvnw clean package
    - docker build -t $DOCKER_IMAGE_NAME:$TAG .

deploy:
  stage: deploy
  script:
    - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY
    - docker push $DOCKER_IMAGE_NAME:$TAG

3. 编写Dockerfile用于构建Docker镜像

在项目根目录下创建一个Dockerfile。

代码语言:dockerfile
复制
# Dockerfile

FROM adoptopenjdk:11-jre-hotspot

WORKDIR /app

COPY target/my-spring-boot-app.jar .

CMD ["java", "-jar", "my-spring-boot-app.jar"]

4. 将代码推送到GitLab仓库

将代码推送到GitLab仓库,确保已经将Spring Boot应用程序、.gitlab-ci.yml和Dockerfile包含在提交中。

代码语言:bash
复制
git add .
git commit -m "Initial commit"
git push origin master

5. GitLab CI/CD流水线触发测试和构建

每当代码推送到GitLab仓库时,GitLab CI/CD流水线将自动触发。它会运行测试并构建Docker镜像。

6. Docker镜像将被构建并推送到指定的Docker Registry

构建的Docker镜像将被推送到指定的Docker Registry,确保在.gitlab-ci.yml文件中设置了正确的CI_REGISTRY_USER、CI_REGISTRY_PASSWORD和CI_REGISTRY。

7. 部署Spring Boot应用程序到目标环境

使用Docker Compose或其他容器编排工具将Spring Boot应用程序部署到目标环境中。下面是使用docker-compose.yml文件进行部署的示例。

代码语言:yaml
复制
version: '3'
services:
  web:
    image: registry.example.com/my-spring-boot-app:latest
    ports:
      - "8080:8080"
    depends_on:
      - database
  database:
    image: mysql:5.7
    environment:
      MYSQL_DATABASE: mydatabase
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_USERNAME: dbuser
      MYSQL_PASSWORD: dbpassword
    ports:
      - "3306:3306"

在上述docker-compose.yml中,有两个服务:web和database。web服务使用你构建的Spring Boot应用程序的Docker镜像,并将其映射到主机端口8080。database服务使用MySQL的Docker镜像,并设置了一些环境变量来配置数据库。并确保$TAG为你之前构建的Docker镜像的标签。

将上述docker-compose.yml文件放置在项目根目录中。

在项目根目录运行以下命令以启动服务:

代码语言:bash
复制
docker-compose up -d

这将启动web和database服务,并将它们分别映射到主机的8080和3306端口。

然后访问http://localhost:8080/api/hello验证应用程序是否成功部署。

若要停止服务,运行以下命令:

代码语言:bash
复制
docker-compose down

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 编写Spring Boot应用程序代码
  • 2. 创建.gitlab-ci.yml文件,定义CI/CD流水线配置
  • 3. 编写Dockerfile用于构建Docker镜像
  • 4. 将代码推送到GitLab仓库
  • 5. GitLab CI/CD流水线触发测试和构建
  • 6. Docker镜像将被构建并推送到指定的Docker Registry
  • 7. 部署Spring Boot应用程序到目标环境
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档