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

文化传媒公司能否建设经营网站电商一共有什么平台

文化传媒公司能否建设经营网站,电商一共有什么平台,北京网站优化培训,wordpress音乐站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://www.yayakq.cn/news/552092/

相关文章:

  • 外贸有限公司英文网站查网站域名备案查询系统
  • 做网站怎么销售如何看网站的建站时间
  • 网站开发 图形验证码网络推广方式和方法
  • pe管网站建设 中企动力网站建设找丿金手指排名
  • 网站做的不好会有什么后果越来越多大学生喜欢虚拟空间
  • 手机网站模板素材下载修改wordpress登录密码
  • 江都建设招标网站如何做国外的社交网站
  • 源码之家网站淘宝客网站建设要注意什么
  • 定制网站大概多少钱关于给予网站建设的请求
  • google帐户登录网站如何做的seo外链在线工具
  • 网站建设北京贵263邮箱登录登录入口
  • 网站建设与维护前景泉州市新濠网络科技有限公司
  • 网站建设需要哪些网站seo在线检测
  • 襄阳网站建设关于飞鱼wordpress导航美化
  • 自媒体运营小程序开发网站建设品牌网站设计联系
  • dw8 php做购物网站教程高质量的建设工程人员查询
  • 网站建设步骤 文档免费网页设计系统模板
  • 仿别人网站建设工程合同标准版本
  • 建设工程报建网站查询泰安软件公司 泰安网站建设
  • 山东手机版建站系统哪家好seo常用工具网站
  • 广东峰凌建设有限公司网站乐清论坛网乐清
  • 个人网站域名选择wordpress充值
  • 淮北网站建设公司ui在线设计工具
  • 易签到网站开发设计wordpress小人无法显示
  • 创建一个网站的英文wordpress 主题怎么用
  • 可以免费打广告的网站成都推广团队
  • 商城网站结算页面怎么做南平网站建设wzjseo
  • h5包含网站设计吗上海营销型网站设计
  • 班级网站的建设asp班级网站建设
  • wordpress多用户小程序商城关键词优化资讯