docker-compose引用环境变量一般都可用了,现在说下引用外部shell的值,没有用到k8s等管理工具不然回滚都是ui一键的事,每一次删除旧latest,下载新latest ,最后附还有一种把tag打回来
备份脚本bk.sh
#/bin/sh
TAGback=`date +%Y%m%d-%H%M%S` #这里可以把%s或者-去掉,很少秒级更新版本吧
TAGlast=latest
NAME=busybox
docker tag ${NAME}:${TAGlast} 123.com/${NAME}:${TAGback}
docker push 123.com/${NAME}:${TAGback}
echo ${TAGback} > /app/back/date.sh
执行bk.sh,上传镜像后,把刚刚的123.com/busybox:20201221-153742本地镜像删除:docker rmi 123.com/busybox:20201221-153742
cat date.sh
20201221-153742
env.sh
#!/bin/sh
export i_version=$(cat /app/back/date.sh)
rollback.yml
version: '2.0'
services:
gateway:
container_name: gateway-1
image: 123.com/busybox:${i_version}
# environment:
env_file:
- /app/back/common.env
hostname: gateway
第一步
执行 docker-compose 命令前先执行 source 命令把 shell 脚本中定义的环境变量导出到当前的 shell 中
source env.sh
检查下结果,验证i_version的值等于20201221-153742
docker-compose -f rollback.yml config
services:
gateway:
container_name: gateway-1
environment:
xx:xx
hostname: gateway-115
image: 123.com/busybox:20201221-153742
version: '2.0'
第二步
执行 docker-compose 命令
docker-compose -f rollback.yml up -d
Pulling gateway (123.com/busybox:20201221-153742)...
20201221-153742: Pulling from busybox
Creating gateway-1 ... done
Attaching to gateway-1
gateway-1 exited with code 0
查看docker images 下镜像已有
伪动态下载镜像完成!
完善真动态大佬们自己写,一般截取值的问题
附:
#!/bin/sh
#一键回滚最新备份
TAGback=$(cat /app/back/date.sh)
docker-compose -f rollback.yml stop
docker-compose -f rollback.yml rm -f
docker rmi 123.com/busybox:latest
docker tag 123.com/busybox:${TAGback} 123.com/busybox:latest
docker-compose -f rollback.yml up -d