Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spring Boot 应用的 GitLab CI/CD Docker 部署全过程

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

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

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

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

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

代码语言:java
AI代码解释
复制
// 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
AI代码解释
复制
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
AI代码解释
复制
# 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
AI代码解释
复制
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
AI代码解释
复制
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
AI代码解释
复制
docker-compose up -d

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

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

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

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

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于docker-compose的Gitlab CI/CD实践&排坑指南
经过长时间实操验证,终于完成基于Gitlab的CI/CD实践,本次实践的坑位很多, 实操过程尽量接近最佳实践(不做hack, 不做骚操作),记录下来加深理解。
心莱科技雪雁
2020/01/03
3.8K0
使用 GitLab CI 和 Docker 自动部署 Spring Boot 应用
Docker和Spring Boot是非常流行的组合,我们将利用GitLab CI的优势,并在应用程序服务器上自动构建,推送和运行Docker镜像。
民工哥
2020/10/23
3.3K0
使用 GitLab CI 和 Docker 自动部署 Spring Boot 应用
使用 GitLab CI 与 Argo CD 进行 GitOps 实践
在现在的云原生世界里面 GitOps 不断的被提及,这种持续交付的模式越来越受到了大家的青睐,在网上也可以找到很多关于它的资源,但是关于 GitOps 相关的工作流实践的示例却并不多见,我们这里就将详细介绍一个使用示例,希望对大家实践 GitOps 有所帮助。
我是阳明
2020/07/17
6.2K0
使用 GitLab CI 与 Argo CD 进行 GitOps 实践
基于gitlab gitlab-runner的cicd部署
在本文中,我将介绍如何基于 GitLab 和 GitLab Runner 进行 CI/CD 部署。GitLab 是一个强大的 Git 仓库管理系统,提供了完整的 CI/CD 管理功能。GitLab Runner 是一个用于运行 CI/CD 作业的轻量级容器化工具。我们将使用 Docker 容器来运行 GitLab 和 GitLab Runner。
堕落飞鸟
2023/03/27
1.7K0
在 Gitlab 中构建 Docker 镜像
有了 Gitlab CI 的脚本能力,又有容器镜像仓库的支持,自然的一个想法就是,在 Gitlab 上构建容器镜像,并推送到镜像仓库之中。
崔秀龙
2019/07/22
2.8K0
在 Gitlab 中构建 Docker 镜像
用 GitLab 做 CI/CD 是什么感觉,太强了!!
来源丨 www.cnblogs.com/cjsblog/p/12256843.html
xcbeyond
2020/08/21
11.4K0
用 GitLab 做 CI/CD 是什么感觉,太强了!!
Gitlab CI 集成 Kubernetes
首先将本节所用到的代码库从 Github 上获得:cnych/gitlab-ci-k8s-demo,可以在 Gitlab 上新建一个项目导入该仓库,当然也可以新建一个空白的仓库,然后将 Github 上面的项目 Clone 到本地后,更改远程仓库地址即可:
jwangkun
2021/12/23
1.8K0
Gitlab CI 集成 Kubernetes
原 记在解决GitLab-CI下的Dock
问题描述 最近一直在测试GitLab下的Runner,并在其下实现CI,其中遇到Docker Image编译后推送到Gitlab的容器中心失败的问题. gitlab-ci.yml Runner 配置 在容器内执行完Docker镜像的编译后,自动推送到注册中心时,报如下错误: c2bf021f0c8d: Layer already exists cd7100a72410: Layer already exists dcf1253999b2: Pushed a7e843cd55f6: Pushed 4fef4e
霡霂
2018/06/04
1.3K0
多个 Kubernetes 集群同GitLab Core功能的集成
本文将描述,在使用带有Core许可的GitLab中,它是如何将 Kubernetes 集群集成到GitLab CI/CD的进程里。在下面的例子中,我们会使用这个方法来集成Kubernetes。先来看看GitLab的官方支持文档以及我们自己的解决方案。
DevOps时代
2020/12/15
1.8K0
多个 Kubernetes 集群同GitLab Core功能的集成
GitLab CI/CD 自动化构建与发布实践
CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。这篇文章中,我将会介绍基于 GitLab CI/CD 的自动化构建与发布实践。如下图所示,整个流程将分为几个部分:
Se7en258
2021/11/30
5.1K1
GitLab CI/CD 自动化构建与发布实践
如何利用Gitlab-CI持续部署到远程机器?
如果看过《基于docker-compose的Gitlab CI/CD实践&排坑指南》这篇文章的朋友,会注意到我是在 Gitlab-Runner服务器上自动部署的站点,本次我们结合ssh部署到远程机器(将CI服务器和部署服务器分离,避免资源抢占)。
有态度的马甲
2020/07/29
2.5K0
如何利用Gitlab-CI持续部署到远程机器?
Golang基于Gitlab CI/CD部署方案
持续集成 (Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
李海彬
2018/09/29
3K0
Golang基于Gitlab CI/CD部署方案
用 GitLab 做 CI/CD 是什么感觉,太强了
GitLab CI/CD 是一个内置在 GitLab 中的工具,用于通过持续方法进行软件开发:
子润先生
2021/06/18
3K0
GitLab CICD与Kubernetes实践·部署Flask Web服务
上篇?Gitlab CICD 与Kubernetes实践·部署GitLab Runner文章内通过Kubernetes已经完成Gitlab Runner的部署的,现在我通过一个实际的案例来测试和使用G
公众号: 云原生生态圈
2020/11/02
2.1K0
GitLab CICD与Kubernetes实践·部署Flask Web服务
用Gitlab CICD Pipeline Template部署应用
Gitlab的CI/CD[1]是通过Gitlab runner执行器实现的,它作为执行器运行我们在.gitlab-ci.yml中定义的一些逻辑行为。前面三篇讲述的是Gitlab的安装、通过一个flask web框架服务进行代码兼容性检查、编译、部署的整个pipeline.
公众号: 云原生生态圈
2020/06/15
2.6K0
用Gitlab CICD Pipeline Template部署应用
将Docker镜像安全扫描步骤添加到CI/CD管道
如今,镜像安全扫描变得越来越流行。这个想法是分析一个Docker镜像并基于CVE数据库寻找漏洞。这样,我们可以在使用镜像之前知道其包含哪些漏洞,因此我们只能在生产中使用“安全”镜像。
DevOps云学堂
2022/10/04
2.2K0
将Docker镜像安全扫描步骤添加到CI/CD管道
实践分享!GitLab CI/CD 快速入门
用过 GitLab 的同学肯定也对 GitLab CI/CD 不陌生,GitLab CI/CD 是一个内置在 GitLab 中的工具,它可以帮助我们在每次代码推送时运行一系列脚本来构建、测试和验证代码的更改以及部署。
Rainbond开源
2022/09/01
2.2K0
gitlab-ci的简易入门—基于python项目的CI演示
使用github上开源的一个python的demo项目,地址为:https://github.com/imooc-course/docker-cloud-flask-demo 打开自己的gitlab,点击New project,把项目导入。
没有故事的陈师傅
2020/07/01
4K0
gitlab-ci的简易入门—基于python项目的CI演示
Docker安装Gitlab和Gitlab-Runner并实现项目的CICD
介绍如何在Linux系统使用Docker安装Gitlab、Gitlab-Runner并实现项目的CICD
薛定喵君
2019/11/05
3K0
K8s?Jenkins?NO!只用gitlab就可以实现springboot(多模块)的自动化部署(全过程+踩坑)
本机的话就是乖乖的搭建maven,搭建java11环境即可,即使你存在java8,也是可以搭建的
一只牛博
2025/05/31
1810
K8s?Jenkins?NO!只用gitlab就可以实现springboot(多模块)的自动化部署(全过程+踩坑)
推荐阅读
相关推荐
基于docker-compose的Gitlab CI/CD实践&排坑指南
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档