Jenkins, docker-compose动态修改镜像版本升级部署

2023-05-16

docker-compose镜像版本动态控制

提取.env文件进行配置通用环境变量

# 当前机器用户的home路径
HOST_HOME=/home/guimu
# 上传文件临时路径
TMP_DATA_PATH=${HOST_HOME}/tempdata/
# media的home路径
MEDIA_HOME=/media
# 挂载的mysql的data路径
MYSQL_DATA_PATH=${HOST_HOME}/mysql/data
# mysql配置文件
MYSQL_CONF=${HOST_HOME}/mysql/my.cnf
#redis数据
REDIS_DATA_PATH=${HOST_HOME}/redis/data
#redis配置文件
REDIS_CONFIG=${HOST_HOME}/redis/redis.conf
# geoserver路径
GEO_SERVER_HOME=${HOST_HOME}/geoserver
# mysql数据库的用户名
DB_USER=root
# mysql数据库的密码
DB_PASSWORD=password
# mysql数据库的host, 一般不用修改,除非docker-compose中的mysql容器名修改才进行修改
DB_HOST=das-mysql
# 当前机器的ip(一般用外网能访问的ip)
HOST_IP=localhost
# 用于测试打包新版本服务镜像, 需要打包新镜像版本时使用
VERSION=latest
# 图像雷达服务日志路径
IMG_RADAR_LOG_PATH=${HOST_HOME}/img_radar_log

docker-compose编排

创建docker-compose-dev.yml:

version: '3'
networks:
  guimu-micro-service-platform_default:
services:
  xxl-job-admin:
    image: kven/xxl-job-admin:2.3.0
    restart: always
    container_name: xxl-job-admin
    environment:
      PARAMS:
        '
              --server.port=9090
              --server.servlet.context-path=/xxl-job-admin
              --spring.datasource.url=jdbc:mysql://${DB_HOST}:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
              --spring.datasource.username=${DB_USER}
              --spring.datasource.password=${DB_PASSWORD}'
    ports:
      - 9090:9090
    networks:
      - guimu-micro-service-platform_default
  geoserver:
    restart: always
    image: kven/geoserver:3.0
    container_name: geoserver
    volumes:
      - ${GEO_SERVER_HOME}/data_dir:/usr/local/geoserver/data_dir
      - /usr/share/fonts/:/usr/share/fonts/ # 此处将宿主机字体映射到容器中,解决发布图层中文乱码问题
    ports:
      - "9180:9180"
    networks:
      - guimu-micro-service-platform_default
  #注册中心
  #自定义的服务名称
  service-registry:
    build:
      context: das-service-registry
      dockerfile: Dockerfile
    #    #镜像名称
    image: kven/service-registry:${VERSION}
    #    #容器名称
    container_name: service-registry
    environment:
      JAVA_OPTS: -Xms256m -Xmx256m
    #容器down掉后,会自动重启
    restart: always
    #映射端口。格式为宿主机端口:容器端口
    ports:
      - "9185:9185"
    networks:
      - guimu-micro-service-platform_default

  #  das-ai-service:
  #    build:
  #      context: das-ai-service
  #      dockerfile: Dockerfile
  #    image: das-ai-service
  #    container_name: das-ai-service
  #    restart: always
  #    ports:
  #      - "9111:9111"
  #    depends_on:
  #      - service-registry
  #    networks:
  #      - guimu-micro-service-platform_default

  #网关服务
  api-gateway-zuul:
    build:
      context: das-service-gateway
      dockerfile: Dockerfile
    image: kven/api-gateway-zuul:${VERSION}
    container_name: api-gateway-zuul
    environment:
      JAVA_OPTS: -Xms256m -Xmx256m
    restart: always
    ports:
      - "9100:9100"
    depends_on:
      - service-registry
    networks:
      - guimu-micro-service-platform_default
  das-data-processed-service:
    build:
      context: das-data-mgr-processed
      dockerfile: Dockerfile
    image:  kven/das-data-processed-service:${VERSION}
    container_name: das-data-processed-service
    environment:
      DB_HOST: ${DB_HOST}
      DB_USER: ${DB_USER}
      DB_PASSWORD: ${DB_PASSWORD}
      IMG_HOST: imgcentos
    #      DB_PORT: 3306 # 不配置,默认为3306端口
    # 挂载的路径需要根据后面迁移的机器进行挂载
    volumes:
      - ${MEDIA_HOME}:/media/
      - ${TMP_DATA_PATH}:/home/das/tempdata/
    restart: always
    ports:
      - "9109:9109"
    depends_on:
      - service-registry
      - xxl-job-admin
    networks:
      - guimu-micro-service-platform_default
  das-data-gis-service:
    build:
      context: das-data-mgr-gis
      dockerfile: Dockerfile
    image: kven/das-data-gis-service:${VERSION}
    container_name: das-data-gis-service
    environment:
      DB_HOST: ${DB_HOST}
      DB_USER: ${DB_USER}
      DB_PASSWORD: ${DB_PASSWORD}
      JAVA_OPTS: -Xms256m -Xmx256m
    # 挂载的路径需要根据后面迁移的机器进行挂载
    volumes:
      - ${MEDIA_HOME}:/media/
      - ${TMP_DATA_PATH}:/home/das/tempdata/
    restart: always
    ports:
      - "9108:9108"
    depends_on:
      - service-registry
      - xxl-job-admin
    networks:
      - guimu-micro-service-platform_default
  das-data-raw-service:
    build:
      context: das-data-mgr-raw
      dockerfile: Dockerfile
    image: kven/das-data-raw-service:${VERSION}
    container_name: das-data-raw-service
    environment:
      DB_HOST: ${DB_HOST}
      DB_USER: ${DB_USER}
      DB_PASSWORD: ${DB_PASSWORD}
      JAVA_OPTS: -Xms256m -Xmx256m
    # 挂载的路径需要根据后面迁移的机器进行挂载
    volumes:
      - ${MEDIA_HOME}:/media/
    restart: always
    ports:
      - "9107:9107"
    depends_on:
      - service-registry
      - xxl-job-admin
    networks:
      - guimu-micro-service-platform_default
  das-security-service:
    build:
      context: das-service-security
      dockerfile: Dockerfile
    image: kven/das-security-service:${VERSION}
    container_name: das-security-service
    environment:
      DB_HOST: ${DB_HOST}
      DB_USER: ${DB_USER}
      DB_PASSWORD: ${DB_PASSWORD}
      JAVA_OPTS: -Xms256m -Xmx256m
    restart: always
    ports:
      - "9110:9110"
    depends_on:
      - service-registry
    networks:
      - guimu-micro-service-platform_default
  das-ui-service:
    build:
      context: das-web-ui
      dockerfile: Dockerfile
    image: kven/das-ui-service:${VERSION}
    container_name: das-ui-service
    environment:
      GATE_HOST: ${HOST_IP}
      DB_HOST: ${DB_HOST}
      DB_USER: ${DB_USER}
      DB_PASSWORD: ${DB_PASSWORD}
      JAVA_OPTS: -Xms256m -Xmx256m
    # 挂载的路径需要根据后面迁移的机器进行挂载
    volumes:
      - ${MEDIA_HOME}:/media/
    restart: always
    ports:
      - "9103:9103"
    depends_on:
      - service-registry
    networks:
      - guimu-micro-service-platform_default
  das-workflow-service:
    build:
      context: das-workflow-core
      dockerfile: Dockerfile
    image: kven/das-workflow-service:${VERSION}
    container_name: das-workflow-service
    environment:
      DB_HOST: ${DB_HOST}
      DB_USER: ${DB_USER}
      DB_PASSWORD: ${DB_PASSWORD}
      JAVA_OPTS: -Xms256m -Xmx256m
    restart: always
    ports:
      - "9101:9101"
    depends_on:
      - service-registry
    networks:
      - guimu-micro-service-platform_default
  mysql:
    restart: always
    container_name: das-mysql
    image: kven/mysql:1.0
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
    volumes:
      - ${MYSQL_DATA_PATH}:/var/lib/mysql
    networks:
      - guimu-micro-service-platform_default
  redis:
    restart: always
    container_name: das-redis
    image: redis:6.2.7
    ports:
      - "6380:6379"
    volumes:
      - ${REDIS_DATA_PATH}:/data
      - ${REDIS_CONFIG}:/etc/redis/redis.conf
    networks:
      - guimu-micro-service-platform_default
  imgserver:
    image: kven/imgcentos:4.0
    container_name: imgcentos
    restart: always
    ports:
      - "9140:9140"
    volumes:
      - ${MEDIA_HOME}:/media
      - ${IMG_RADAR_LOG_PATH}:/root/log
    networks:
      - guimu-micro-service-platform_default
  radarserver:
    image: kven/radarcentos:2.0
    container_name: radarcentos
    restart: always
    ports:
      - "9130:9130"
    volumes:
      - ${MEDIA_HOME}:/media
      - ${IMG_RADAR_LOG_PATH}:/root/log
    networks:
      - guimu-micro-service-platform_default

# 修改.env文件中的version配置打包对应的版本镜像, 指定文件docker-compose-dev.yml构建dev的镜像

docker-compose -f docker-compose-dev.yml up --build -d

推送构建的镜像到远程仓库

# 首先需要登录对应的远程仓库, 输入指定的账号密码

docker login

编写对应的推送脚本pushImage.sh:

#!/bin/bash
version=$1

commands="docker push kven/das-workflow-service:${version};
docker push kven/das-ui-service:${version};
docker push kven/das-security-service:${version};
docker push kven/das-data-raw-service:${version};
docker push kven/das-data-gis-service:${version};
docker push kven/das-data-processed-service:${version};
docker push kven/api-gateway-zuul:${version};
docker push kven/service-registry:${version};"

bash -c "$commands"

# 设定可执行权限

chmod +x pushImage.sh

# 推送指定的版本:

# ./pushImage.sh 版本号

./pushImage.sh latest

配置Jenkins

新建工程

 配置工程名称, 选择freestyle project,点击确定

 支持参数化构建

 通过shell构建

 在对应的构建服务器上编写restart.sh脚本:

#!/bin/bash
# 切换到对应的工程目录
cd /home/guimu/das-docker/guimu-micro-service-platform-internal
# 更新代码
svn up
# 打包
mvn package -DskipTest
# 关闭原有的容器
docker-compose -f docker-compose-dev.yml down
# 构建新的容器并启动
docker-compose -f docker-compose-dev.yml up --build -d

# 添加可执行权限

chmod +x restart.sh

在前一步中的Jenkins添加的shell中编写脚本:

#!/bin/sh
# 切换到工程的工作空间
cd /home/guimu/das-docker
# 根据Jenkins的构建参数version动态替换.env文件中对应的版本号
sed -i "s/VERSION=\(.*\)/VERSION=${version}/g" /home/guimu/das-docker/guimu-micro-service-platform-internal/.env
# 重启并构建新版本的容器镜像
./restart.sh
# 推送对应的版本镜像
./pushImage.sh $version

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jenkins, docker-compose动态修改镜像版本升级部署 的相关文章

  • 解决ssh登录,找不到匹配的host key算法

    使用SSH登录某台机器 xff0c 有时因为server端的一些变动 xff0c 会出现以下信息 xff1a 找不到匹配的host key算法 xff08 此处先不提及原理 xff0c 只讲处理方法 xff0c 需要了解原因的请留言或找其他
  • Kubernetes集群监控方案

    文章目录 前言一 Prometheus是什么 Prometheus简介 xff1a Prometheus的特点 xff1a Prometheus相关组件 xff1a 二 在k8s集群的所有节点上下载所需要的image三 采用daemonse
  • stm32 VBAT通过锂电池实现断电保持电路 不用纽扣电池

    对于一些通过锂电池供电的小型穿戴设备如手表 通过锂电池实现后备电池不断电 电池电源通过4148二极管降压到3 3V提供后备电源 就不需要加纽扣电池了 可以节省空间
  • STM32配置外设时,外设结构体寄存器缺省带来的后果。

    今天在调试定时器 xff0c PWM输入捕获的功能时 xff0c 奇怪的发现 xff0c 在某一处多添加一句语句导致改变了定时器模式的配置 正常情况下 xff0c 我们配置外设的时候 xff0c 都会采用这样的方式 xff1a span c
  • STM32以太网通信-LWIP简介

    LwIP全名 xff1a Light weight IP xff0c 意思是轻量化的TCP IP协议 xff0c 是瑞典计算机科学院 SICS 的Adam Dunkels 开发的一个小型开源的TCP IP协议栈 LwIP的设计初衷是 xff
  • ubuntu笔记本外置显卡开展深度学习(转载)

    来源知乎 xff1a https zhuanlan zhihu com p 102359826
  • Linux 下c语言ftp服务器简单实现

    这个程序转载自http aijiekj blog 163 com blog static 12986678920112321853230 原来的程序没有注释 xff0c 最近这段时间在学习网络编程这块 xff0c 就在网上找了个程序来学习
  • 警告!你的隐私正在被上亿网友围观偷看!

    你的隐私正在被上亿万网友围观偷看 xff01 事情要从一款被推荐到烂的软件说起 Everything 这个软件想必很多同学都有听过 xff0c 是一款非常好用的文件搜索软件 xff0c 很多同学把它设置为开机必启动项之一 简单来说 Ever
  • 工作中遇到的C中Sscanf 函数的用法详解

    1 首先 xff0c 看到sscanf时 xff0c 会想到scanf xff0c 唯一不同的是前者是以固定的字符串为输入源 xff1b 后者是以屏幕为输入源 2 sscanf函数的定义为 int sscanf const char str
  • C 语言中结构体中成员所占内存的大小

    在C99标准中 xff0c 对于内存对齐的细节没有作过多的描述 xff0c 具体的实现交由编译器去处理 xff0c 所以在不同的编译环境下 xff0c 内存对齐可能略有不同 xff0c 但是对齐的最基本原则是一致的 xff0c 对于结构体的
  • 工作中遇到的一些SVN恶心的问题处理方法,解决问题的小妙招来了!---致刚刚参加的工作的青涩的人

    1 如果你已经参加了工作 xff0c 难免而且一定要用户svn xff0c 很多公司都会选择它来管理公司的项目 xff0c 这时懂的svn的用法会让你的工作事半功倍的 相信你一定为遇到上传失败 更新失败 clean up 失败而烦恼 xff
  • 麻将胡牌的算法

    清一色是麻将的种类之一 xff0c 指有一种花色的序数牌组成的胡牌 数字1 9 xff0c 每个数字最多4张牌 xff1b 我们不考虑具体的花色 xff0c 我们只看数字 刻字 xff1a 三张一样的牌 xff1a 111 222 333
  • 进程和线程的区别、相同点

    1 首先是定义 进程 xff1a 是执行中一段程序 xff0c 即一旦程序被载入到内存中并准备执行 xff0c 它就是一个进程 进程是表示资源分配的的基本概念 xff0c 又是调度运行的基本单位 xff0c 是系统中的并发执行的单位 线程
  • ORACLE日期数据类型

    oracle数据类型看起来非常简单 xff0c 但用起来会发现有许多知识点 xff0c 本文是我对ORACLE日期数据类型的一些整理 xff0c 都是开发入门资料 xff0c 与大家分享 xff1a 注 xff1a 由于INTERVAL及T
  • linux中shmget函数

    xfeff xfeff shmget int shmget key t key size t size int flag key 标识符的规则 size 共享存储段的字节数 flag 读写的权限 返回值 xff1a 成功返回共享存储的id
  • linux 中常用的数据库命令

    xfeff xfeff 1 显示数据库 show databases 2 选择数据库 use 数据库名 3 显示数据库中的表 show tables 4 显示数据表的结构 describe 表名 5 显示表中记录 SELECT FROM 表
  • socket编程accept函数返回值的理解

    accept函数返回值成功时返回非负值 xff0c 失败时返回 1 accept函数接受一个客户端请求后会返回一个新的SOCKFD值 xff0c 当有不同的客户端同时有不同请求时 xff0c 会返回不同的SOCKFD的值 这个不同的值和建立
  • 【TEE自学随笔】keystone代码略读(长文多图)

    武大信安在读 xff0c 最近在自学Risc v架构的可信执行环境 本篇内容由队友和我总结而成 xff0c 如有错误欢迎指正交流 keystone是risc v架构的开源tee 利用risc v的pmp来隔离页表 xff0c 进一步缩小了可
  • 二维数组与指针、指针数组、数组指针的用法

    二维数组 和指针 用指针表示二维数组 元素 要用指针处理二维数组 xff0c 首先要解决从存储的角度对二维数组 的认识问题 我们知道 xff0c 一个二维数组 在计算机中存储时 xff0c 是按照先行后列的顺序依次存储的 xff0c 当把每
  • 深剖基类和派生类的虚函数表

    1 当派生类实现基类的虚函数时 xff0c 基类中虚函数表和虚函数地址和派生类中虚函数表和虚函数地址不同 xff1b 当派生类不实现基类的虚函数时 xff0c 基类中虚函数表和虚函数地址和派生类中虚函数表和虚函数的地址相同 1 派生类重新实

随机推荐

  • C语言中转义字符

    在字符集中 xff0c 有一类字符具有这样的特性 xff1a 当从键盘上输入这个字符时 xff0c 显示器上就可以显示这个字符 xff0c 即输入什么就显示什么 这类字符称为可显示字符 xff0c 如a b c 43 和空格符等都是可显示字
  • c++ 中map 的find 用法

    用find函数来定位数据出现位置 xff0c 它返回的一个迭代器 xff0c 当数据出现时 xff0c 它返回数据所在位置的迭代器 xff0c 如果map中没有要查找的数据 xff0c 它返回的迭代器等于end函数返回的迭代器 xff0c
  • 解决AndroidStudio控制台输出乱码

    方法一 xff1a Help gt Edit Custom VM Options 在最后一行换行加上 xff1a xff08 不要漏掉符号 加好之后重启AndroidStudio xff09 Dfile encoding 61 UTF 8
  • c++--UDP发送接收

    UDP发送接收 头文件 include lt Winsock2 h gt 库 pragma comment lib Ws2 32 lib 连接Sockets相关库 初始化Windows SOCKET WSADATA wsaData if W
  • Airsim Setting up PX4 Hardware-in-Loop 环境搭建教程(windows)

    Airsim Setting up PX4 Hardware in Loop 环境搭建教程 xff08 windows xff09 经过本教程 xff0c 能够通过PX4连接遥控器 xff0c 继而能够控制airsim UE4中四轴模型 目
  • 在PX4 v1.9.2替换姿态控制算法方法

    在PX4 v1 9 2替换姿态控制算法方法 目的是在model中写一个与mc att control类似的model加入自己的姿态控制算法并替换之 目录 姿态控制算法simlink搭建生成并简单说明 PX4 v1 9 2姿态控制接口简单介绍
  • 不必通宵挂机,飞速克隆PX4源码的方法

    不必通宵挂机 xff0c 飞速克隆PX4源码的方法 项目地址 国内github网速 xff0c 那是慢的没法说 xff0c 克隆个PX4源码要半天 xff0c 然后更新子模块 xff0c 那不得需要一夜的时间 xff0c 有时早上一来 xf
  • Simlink与PX4硬件在环仿真(HIL)实现

    Simlink与PX4硬件在环仿真 HIL 实现 介于涉及的知识比较多 xff0c 这里只是简单的介绍一下 xff0c 硬件在环HIL介绍 simlink与PX4通信实现 硬件在环HIL介绍 为来贯彻万物都可以用数学公式表示 xff0c 我
  • MSP430如何给板子下载程序?(IAR MSPFET CCS)

    MSP430如何给板子下载程序 xff1f 这个问题其实很简单 xff0c 但就在前几天的我就吃了很大的亏 xff0c 搞了一天都没搞懂 这篇文章来谈一谈我走过的坑吧 xff0c 希望对你有所帮助 一 下载IAR开发IDE 43 串口下载工
  • ROS中ENU坐标系与无人机中NED坐标系的转换关系理解

    ROS中ENU坐标系与无人机中NED坐标系的转换关系理解 项目地址 无人机中NED坐标理解ENU与NED转换 无人机中NED坐标理解 机体坐标系 xff1a 机体坐标系固连飞机 xff0c 其原点 取在多旋翼的重心位置上 x轴在多旋翼对称平
  • PX4无人机ROS下仿真开发

    PX4无人机ROS下仿真开发 Overview Simulation Px4 control Slam Map Image process Planning Volans 项目地址volans 注 xff1a 有任何疑问都可在issues提
  • FlightPlot安装使用方法

    FlightPlot安装使用方法 下载flightPlot源码下载切换openjdk 版本重启安装flightPlot 下载flightPlot源码 git clone recursive https github com PX4 Flig
  • 基于Ubuntu+Eclipse+GDB+OpenOCD+STlink搭建STM32开发环境

    基于Ubuntu 43 Eclipse 43 GDB 43 OpenOCD 43 STlink搭建STM32开发环境 准备工作 xff1a 一台能够上网的配置还不错的电脑 xff0c stm32开发板 xff0c stlink下载器 本人的
  • APM直升机调试记录

    Author xff1a Bingo Time xff1a 20190601 xff0c V1 0 直升机调试记录 十字盘机械配平上位机调十字盘水平调整直升机在Stabilize模式下悬停调整直升机在AltHold模式下悬停调整直升机在Po
  • 3.3 创建一个 ROS 功能包

    本节主要介绍如何用 catkin 来创建一个新的功能包 xff0c 并且使用前面介绍的 rospack 命令去查看功能包的依赖 3 3 1 catkin 功能包的构成 一个完整的 catkin 功能包需要具备以下几个条件 xff1a 包含一
  • 树莓派安装MAVROS的一些坑

    一 基于原生系统安装ROS 详见文章https blog csdn net qq 33662995 article details 98645837 xff0c 写的很详细了 二 源码安装MAVROS 由于树莓派环境下不能直接从二进制安装
  • 树莓派3 ubuntu Mate 16.04 安装ROS环境

    以下仅为回忆使用 设备 xff1a 树莓派3 系统 xff1a Ubuntu mate 16 04 日期 xff1a 2018 7 20 目前支持树莓派3b 43 官方的Ubuntu mate系统还没出 xff0c 強行使用會出現彩虹屏 x
  • SSH远程连接服务器登录时出现如下错误Disconnected:No supported authentication methods available

    当使用 SSH 登录云服务器 ECS xff08 Elastic Compute Server xff09 Linux 服务器时 xff0c 即便正确输入了密码 xff0c 也会出现类似如下错误信息 xff1a span class tok
  • 内存分配方式详解(堆、栈、自由存储区、全局/静态存储区和常量存储区)

    原文地址 xff1a https blog csdn net u013007900 article details 79338653 参考文章 xff1a http www cnblogs com hanyonglu archive 201
  • Jenkins, docker-compose动态修改镜像版本升级部署

    docker compose镜像版本动态控制 提取 env文件进行配置通用环境变量 当前机器用户的home路径 HOST HOME 61 home guimu 上传文件临时路径 TMP DATA PATH 61 HOST HOME temp