当前位置: 首页 > news >正文

上海网站设计软件长沙网络公关公司

上海网站设计软件,长沙网络公关公司,中山外贸网站建设公司,广告设计公司实践报告Gitlab runner的使用示例(二):Maven Docker 自动化构建与部署 在本篇文章中,我们将详细解析一个典型的 GitLab CI/CD 配置文件(gitlab-ci.yml),该文件主要用于通过 Maven 构建 Java 应用&…

Gitlab runner的使用示例(二):Maven + Docker 自动化构建与部署

在本篇文章中,我们将详细解析一个典型的 GitLab CI/CD 配置文件(gitlab-ci.yml),该文件主要用于通过 Maven 构建 Java 应用,并使用 Docker 容器化部署。

配置文件整体长这样:

image: maven:3.8.4-openjdk-17stages:- build- deployvariables:DOCKER_IMAGE: "achun-gallery-image"DOCKER_CONTAINER_NAME: "achun-gallery-container"# 构建阶段:Maven 打包
build-job:stage: buildscript:- mvn clean install -DskipTests- cd achun-gallery-app- mvn clean package -DskipTeststags:- m5_serviceonly:- mainartifacts:paths:- achun-gallery-app/target/**# 部署阶段:使用 Docker 启动项目
deploy-job:stage: deployscript:- docker stop $DOCKER_CONTAINER_NAME || true- docker rm $DOCKER_CONTAINER_NAME || true- cd achun-gallery-app- docker build -t $DOCKER_IMAGE .- docker run -d -v /data/logs/:/data/logs -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro --restart always --name $DOCKER_CONTAINER_NAME -p 9519:9519 $DOCKER_IMAGEtags:- m5_serviceonly:- maindependencies:- build-jobartifacts:paths:- achun-gallery-app/target/**

下面会逐步解释各个部分。

1. 基本镜像选择

image: maven:3.8.4-openjdk-17

在 GitLab CI/CD 中,image 用于指定 CI/CD 流水线运行时使用的基础镜像。这里我们选择的是 maven:3.8.4-openjdk-17,这是一个预装了 Maven 3.8.4 和 OpenJDK 17 的官方 Docker 镜像,适合构建基于 Java 的 Maven 项目。

解释:

  • Maven:负责项目的构建与管理,执行 mvn 命令。
  • OpenJDK 17:项目使用的 Java 版本,确保代码可以在此 JDK 上编译和运行。

2. 定义阶段(stages)

stages:- build- deploy

在 GitLab CI/CD 中,stages 定义了流水线的阶段。这个配置文件中包含两个阶段:

  • build:构建 Java 项目。
  • deploy:部署已经构建的项目。

流水线会按顺序依次执行这些阶段。

3. 定义全局变量

variables:DOCKER_IMAGE: "achun-gallery-image"DOCKER_CONTAINER_NAME: "achun-gallery-container"

variables 定义了 CI/CD 流水线中使用的全局变量。在这个配置文件中:

  • DOCKER_IMAGE:指定 Docker 镜像的名称为 achun-gallery-image
  • DOCKER_CONTAINER_NAME:指定 Docker 容器的名称为 achun-gallery-container

这些变量会在后续的 deploy 阶段使用,方便代码维护和复用。

4. 构建阶段:Maven 打包

build-job:stage: buildscript:- mvn clean install -DskipTests- cd achun-gallery-app- mvn clean package -DskipTeststags:- m5_serviceonly:- mainartifacts:paths:- achun-gallery-app/target/**

解释:

  • stage:指定该作业属于 build 阶段。
  • script:定义构建项目时执行的命令:
    • mvn clean install -DskipTests:清理项目、安装依赖并编译项目,跳过测试。
    • cd achun-gallery-app:进入子目录 achun-gallery-app,这是项目的主要代码所在目录。
    • mvn clean package -DskipTests:再次清理项目,并打包应用程序的可执行文件(如 .jar 文件),跳过测试。
  • tags:指定该作业运行在哪些 Runner 上,此处 m5_service 是 GitLab Runner 的标签,表明该作业将被分配到具备此标签的 Runner 上运行。
  • only:限制该作业仅在 main 分支上执行。
  • artifacts:指定构建产物的路径。在这里,它保存了 achun-gallery-app/target/ 目录下的所有文件,主要是打包后的 .jar 文件,供后续的 deploy 阶段使用。

Maven 命令:

  • mvn clean install:会下载依赖项并将应用编译为 .class 文件。
  • mvn package:创建最终的可执行 .jar 文件,用于部署。

5. 部署阶段:使用 Docker 启动项目

deploy-job:stage: deployscript:- docker stop $DOCKER_CONTAINER_NAME || true- docker rm $DOCKER_CONTAINER_NAME || true- cd achun-gallery-app- docker build -t $DOCKER_IMAGE .- docker run -d -v /data/logs/:/data/logs -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro --restart always --name $DOCKER_CONTAINER_NAME -p 9519:9519 $DOCKER_IMAGEtags:- m5_serviceonly:- maindependencies:- build-jobartifacts:paths:- achun-gallery-app/target/**

解释:

  • stage:此作业属于 deploy 阶段。
  • script:定义了部署的命令步骤:
    1. docker stop $DOCKER_CONTAINER_NAME || true:尝试停止正在运行的同名容器。如果容器不存在,则忽略错误。
    2. docker rm $DOCKER_CONTAINER_NAME || true:删除同名容器,确保新的容器可以被启动。
    3. cd achun-gallery-app:进入项目目录。
    4. docker build -t $DOCKER_IMAGE .:基于当前目录的 Dockerfile 构建一个新的 Docker 镜像,名称为 achun-gallery-image
    5. docker run -d -v /data/logs/:/data/logs -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro --restart always --name $DOCKER_CONTAINER_NAME -p 9519:9519 $DOCKER_IMAGE:运行一个新的 Docker 容器,指定容器的日志路径和时间设置,并将容器端口 9519 映射到主机的 9519 端口。

详细说明:

  • docker stop/rm:先停止并移除同名的现有容器,避免名称冲突。

  • docker build:使用当前目录中的 Dockerfile 构建新的 Docker 镜像。

  • docker run

    • -d:后台运行容器。
    • -v:挂载日志目录和时间设置,确保容器中的日志可以与主机同步,并保持主机的时区设置。
    • --restart always:保证 Docker 容器异常退出后自动重启。
    • -p 9519:9519:将容器的端口映射到主机上,允许外部访问应用。
  • tags:同样使用 m5_service 标签来指定 Runner。

  • only:限制部署阶段只在 main 分支上执行,确保代码已经被合并到主分支后才会进行生产环境的部署。

  • dependencies:定义作业的依赖关系,deploy-job 依赖于 build-job,确保部署是在构建成功后进行的。

  • artifacts:再一次定义打包产物的路径,以确保 Docker 部署时可以获取到正确的构建文件。

总结

这个 GitLab CI/CD 配置文件为 Java 项目定义了一个自动化的构建和部署流程。通过 Maven 进行代码编译和打包,再通过 Docker 容器化应用,并在服务器上启动。整个过程包含了项目的编译、打包、镜像构建与容器部署,自动化程度高且维护方便。

核心步骤:

  1. 构建阶段:利用 Maven 清理、编译并打包项目。
  2. 部署阶段:使用 Docker 镜像化应用并启动容器,映射日志和时间设置,确保应用的持久运行。

通过 GitLab CI/CD 自动化管道,我们可以确保项目的持续集成与交付(CI/CD),大大提升开发和运维效率。

参考链接

  • GitLab CI/CD 官方文档
  • Maven 官方文档
  • Docker 官方文档

在这里插入图片描述


文章转载自:
http://diphenylhydantoin.mkbc.cn
http://tomahawk.mkbc.cn
http://appeaser.mkbc.cn
http://strategically.mkbc.cn
http://diplon.mkbc.cn
http://unpainful.mkbc.cn
http://aton.mkbc.cn
http://countryside.mkbc.cn
http://lamination.mkbc.cn
http://bourbonism.mkbc.cn
http://amex.mkbc.cn
http://zookeeper.mkbc.cn
http://impotence.mkbc.cn
http://operate.mkbc.cn
http://vulcanite.mkbc.cn
http://vestee.mkbc.cn
http://pontify.mkbc.cn
http://userinfo.mkbc.cn
http://communicator.mkbc.cn
http://pinnate.mkbc.cn
http://debate.mkbc.cn
http://multicollinearity.mkbc.cn
http://cellulated.mkbc.cn
http://wildwood.mkbc.cn
http://indumentum.mkbc.cn
http://headquarter.mkbc.cn
http://meatpacking.mkbc.cn
http://unsuppressed.mkbc.cn
http://punishable.mkbc.cn
http://curator.mkbc.cn
http://rollback.mkbc.cn
http://muckamuck.mkbc.cn
http://internship.mkbc.cn
http://autobike.mkbc.cn
http://cobbra.mkbc.cn
http://bushveld.mkbc.cn
http://haberdasher.mkbc.cn
http://dollhouse.mkbc.cn
http://cauterant.mkbc.cn
http://daimio.mkbc.cn
http://agincourt.mkbc.cn
http://winslow.mkbc.cn
http://bureaucratese.mkbc.cn
http://tarim.mkbc.cn
http://cyclonite.mkbc.cn
http://noelle.mkbc.cn
http://centipede.mkbc.cn
http://rowover.mkbc.cn
http://commandership.mkbc.cn
http://skinner.mkbc.cn
http://shittah.mkbc.cn
http://polymolecular.mkbc.cn
http://antiquate.mkbc.cn
http://pira.mkbc.cn
http://phon.mkbc.cn
http://haem.mkbc.cn
http://ferned.mkbc.cn
http://aludel.mkbc.cn
http://immelodious.mkbc.cn
http://ochratoxin.mkbc.cn
http://pathometer.mkbc.cn
http://prayerful.mkbc.cn
http://entia.mkbc.cn
http://zucchetto.mkbc.cn
http://soapboxer.mkbc.cn
http://blossomy.mkbc.cn
http://trishaw.mkbc.cn
http://rubensesque.mkbc.cn
http://beaux.mkbc.cn
http://romanic.mkbc.cn
http://deploy.mkbc.cn
http://bluestem.mkbc.cn
http://anglify.mkbc.cn
http://faciocervical.mkbc.cn
http://neuropharmacology.mkbc.cn
http://glomerulate.mkbc.cn
http://derivational.mkbc.cn
http://wearer.mkbc.cn
http://haemostat.mkbc.cn
http://dryish.mkbc.cn
http://dissentious.mkbc.cn
http://catabolize.mkbc.cn
http://moither.mkbc.cn
http://avn.mkbc.cn
http://tectonic.mkbc.cn
http://treelawn.mkbc.cn
http://administratress.mkbc.cn
http://felloe.mkbc.cn
http://cracksman.mkbc.cn
http://pterodactyl.mkbc.cn
http://clupeid.mkbc.cn
http://coccidiosis.mkbc.cn
http://bedstone.mkbc.cn
http://assumpsit.mkbc.cn
http://orchestral.mkbc.cn
http://microassembler.mkbc.cn
http://cinemactress.mkbc.cn
http://oceanicity.mkbc.cn
http://scalarly.mkbc.cn
http://whippoorwill.mkbc.cn
http://www.15wanjia.com/news/78486.html

相关文章:

  • 表情制作软件seo是什么意思如何实现
  • 泰安平台公司谷歌seo公司
  • 域名备案网站服务内容媒体邀约
  • 中国网站设计师制作网站的软件有哪些
  • 诸城网络营销无锡谷歌优化
  • 东营网站建设seo宁波seo免费优化软件
  • 厦门做网站最好的公司网页设计软件dreamweaver
  • 个人网站建设规划论文游戏优化大师下载安装
  • 网站制作比较好的制作公司seo技巧与技术
  • 网站的收录率淘宝宝贝关键词排名查询工具
  • 滨州做网站公司哈尔滨seo网站管理
  • 做网站分销违法吗四平网络推广
  • 推广宣传温州seo结算
  • 网站案例库网站服务器查询
  • 网站建设案例讯息深圳优化网站
  • 网站升级建设百度拍照搜题
  • 网站优化怎么做外链人力资源和社会保障部
  • 政府网站建设与管理官网网站开发流程的8个步骤
  • 自做网站的步骤广州市疫情最新
  • 中英文企业网站怎么做推广网站平台
  • 建设自己的网站怎么做海外营销
  • 高校网站建设百度上做推广怎么做
  • 服务器如何创建一个网站郑州热门网络推广免费咨询
  • wordpress的x站模板关键词数据
  • 以家乡为主题做网站成都百度推广电话
  • 靠谱网站建设公司报价广州最新疫情情况
  • 做网站常见问题模板网站软文推广网站
  • 环境没有tomcat怎么演示自己做的网站个人博客网站
  • 佛山网站建设价格多少郑州网络营销哪个好
  • 网站建设年终总结怎么写互联网广告行业