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 安装包进行部署。

  • 相关阅读:
    Saltstack module acl 详解
    Saltstack python client
    Saltstack简单使用
    P5488 差分与前缀和 NTT Lucas定理 多项式
    CF613D Kingdom and its Cities 虚树 树形dp 贪心
    7.1 NOI模拟赛 凸包套凸包 floyd 计算几何
    luogu P5633 最小度限制生成树 wqs二分
    7.1 NOI模拟赛 dp floyd
    springboot和springcloud
    springboot集成mybatis
  • 原文地址:https://www.cnblogs.com/kirito-c/p/11338398.html
Copyright © 2011-2022 走看看