zoukankan      html  css  js  c++  java
  • Docker 方式部署的应用的版本更新

    前言

    公司使用 Docker-Compose 的方式部署 Jenkins/Gitlab/Sonar/Confluence/Apollo/Harbor/ELK/MySQL 等一系列开发工具/测试数据库。
    而每过一段时间,我们就要评估这些软件的新版本,再决定是否升级。

    通过使用 Docker 部署这些应用,好处就是方便升级、部署、备份。

    配置仓库

    首先,我们有一个基础设施配置仓库,专门存放各应用的部署配置文件,每个应用一个文件夹,里面有这些文件:

    1. docker-compose.yml:harbor 除外,因为它的 docker-compose.yml 是从它自己的配置文件生成的。
      1. 应用数据一般直接映射到 ./xxx_data,这样数据和配置文件放在一起,方便统一管理。
    2. Dockerfile: 如果镜像需要自己构建或者做定制,就会有 Dockerfile
    3. README.md:说明文档,介绍部署、升级、备份的步骤与注意事项。
    4. 其他配置文件:如 harbor 需要 harbor.yml.

    升级步骤

    方案一

    查看官方的升级说明,一般直接升级 Docker 镜像就行。

    有不兼容的更新时,官方基本都会给出说明和升级建议,比如先升级到某个中间版本,再逐步升级到最新版。
    或者在升级前按说明去运行某个数据库表结构修改的 sql。

    通用的流程如下:

    1. 备份原有数据卷/映射文件夹,最好是直接和相应的配置文件一起备份。
      • 如果数据量太大不方便备份,你也很相信该软件的升级不会破坏数据,也可以不备份。。
    2. 更新镜像版本号(升级到最新版本,或者中间版本),然后 docker-compose up -d 启动。
    3. 有问题再回退。。。

    如果应用比较重要,需要保证稳定可用,可以先把数据拷到新虚拟机上并通过新镜像部署,测试一段时间,确认没问题了再正式更新。

    方案二

    使用软件自带的“导入导出/主从复制”这样的功能,通过 api/cli/ui 进行数据的迁移。这样的好处是不会遇到兼容性问题,但是前提是软件本身有这样的功能。

    比如 Harbor 仓库,基本都可以通过它的同步功能进行数据迁移。

    例外是同步 API 有不兼容变更的情况,比如 harbor 1.8 升级到 1.10,同步 api 发生了变更,官方也没给出兼容方案。
    这时就只能退回到方案一了:备份数据,然后下载新的 harbor 安装包进行部署。

  • 相关阅读:
    vue element 表格错位问题
    echarts tooltip 按值的降序显示 tip 信息
    前端 玫瑰花小样式
    echarts X轴数据过多批量显示
    微信js sdk的使用初步理解
    对象 的循环嵌套
    移动端拉起电话请求
    js后加版本号
    数组排序于数组去重
    es6数组的方法
  • 原文地址:https://www.cnblogs.com/kirito-c/p/11338398.html
Copyright © 2011-2022 走看看