离线部署所需要的文件:

  • docker安装包
  • docker-compose安装包
  • arkid的镜像文件

一、下载

要求:一台能上网,安装有docker和git,并且能执行shell的机器

在一个空的的文件夹下执行如下脚本, 直接全复制敲回车就行 , 会下载docker,docker-compose和所有镜像文件。

  1. cat >> offlineinstallarkid.sh << "EOF"
  2. tar -vxzf docker-*.tgz
  3. cp docker/* /usr/bin/
  4. mv docker-compose /usr/local/bin/
  5. chmod +x /usr/local/bin/docker-compose
  6. nohup dockerd >/dev/null 2>&1 &
  7. docker load < arkidimages.tar
  8. EOF
  9. cat >> get_all.sh << "EOF"
  10. # docker版本
  11. DOCKERVERSION=19.03.12
  12. # docker-compose版本
  13. DCVERSION=1.28.2
  14. ping -c 1 www.baidu.com > /dev/null 2>&1
  15. if [ $? -eq 0 ];then
  16. echo "网络良好!!"
  17. else
  18. echo "访问不了百度,应该是没有外网?"
  19. exit 1
  20. fi
  21. # 下载镜像,压缩镜像
  22. downloadImages(){
  23. echo -e "\n 开始下载镜像, 将要下载的镜像版本:\n"
  24. arkidimages=(`cat arkid-docker-compose/docker-compose.yml |grep image |awk '{print $2}'`)
  25. for i in ${arkidimages[*]}
  26. do
  27. echo $i
  28. done
  29. for i in ${arkidimages[*]}
  30. do
  31. echo -e "\n --------- docker pull $i -----------------------\n"
  32. docker pull $i
  33. done
  34. echo -e "\n --------- 导出镜像到一个压缩文件里 arkidimages.tar ---------------\n "
  35. docker save -o arkidimages.tar ${arkidimages[*]}
  36. }
  37. # 下载 docker-compose
  38. downloadCompose(){
  39. echo -e "\n下载docker-compose $DCVERSION \n"
  40. curl -L https://get.daocloud.io/docker/compose/releases/download/$DCVERSION/docker-compose-Linux-x86_64 > ./docker-compose
  41. }
  42. # 下载 docker
  43. downloadDocker(){
  44. echo -e "\n下载docker压缩包 $DOCKERVERSION \n"
  45. curl -LO https://mirrors.aliyun.com/docker-ce/linux/static/stable/x86_64/docker-$DOCKERVERSION.tgz
  46. }
  47. # 下载 docker-compose描述文件
  48. downloadGit(){
  49. if [ -d "arkid-charts" ]; then
  50. echo -e "arkid-charts已经在本目录下!"
  51. else
  52. echo -e "\n下载 arkid 部署文件\n"
  53. git clone --branch master --depth 1 https://github.com/longguikeji/arkid-charts.git
  54. fi
  55. if [ -d "arkid-charts/docker-compose" ]; then
  56. mv arkid-charts/docker-compose ./arkid-docker-compose
  57. rm -rf arkid-charts
  58. else
  59. if [ -d "./arkid-docker-compose" ]; then
  60. echo -e "\n arkid 部署文件已经存在 \n"
  61. else
  62. echo -e "请删掉 arkid-charts文件夹,再执行脚本"
  63. fi
  64. fi
  65. }
  66. downloadGit
  67. downloadImages
  68. downloadCompose
  69. downloadDocker
  70. echo -e "\n ------------------------ 下载完成!------------------------ \n"
  71. EOF
  72. bash get_all.sh

二、上传文件到目标服务器

  1. # 查看
  2. ls
  3. arkid-docker-compose arkidimages.tar docker-19.03.12.tgz docker-compose offlinearkid.sh
  4. # 把本目录下所有文件复制到目标机器某个目录
  5. scp -r ./* root@xxx.xxx.xxx.xxx:/root/workspace/arkid

三、解压安装

  1. # 登陆目标服务器,进入到文件所在目录, 执行
  2. bash offlineinstallarkid.sh
  3. # 启动arkid
  4. cd arkid-docker-compose
  5. docker-compose up -d

四、更新

在没有安装docker的机器上可以使用python脚本来拉取镜像[https://github.com/NotGlop/docker-drag](https://github.com/NotGlop/docker-drag);
这个脚本会自动把镜像下载下来并打成tar包。
image.png

  1. # 比如arkid后端更新了, 下载镜像,上传镜像
  2. docker pull longguikeji/arkid:1.4.6
  3. docker save -o arkid146.tar longguikeji/arkid:1.4.6
  4. # 比如arkid前端更新了, 下载镜像,上传镜像
  5. docker pull longguikeji/arkid-fe:1.4.5
  6. docker save -o arkidfe145.tar longguikeji/arkid-fe:1.4.5
  7. # 上传到目标服务器某个目录
  8. scp arkid146.tar root@xxx.xxx.xxx.xxx:/root/workspace/arkid
  9. scp arkidfe145.tar root@xxx.xxx.xxx.xxx:/root/workspace/arkid
  10. # 登陆目标服务器上传文件的目录
  11. docker load < arkid146.tar
  12. docker load < arkidfe145.tar
  13. # 进入到 arkid-docker-compose 目录
  14. cd arkid-docker-compose
  15. # 修改 arkid镜像版本
  16. vi docker-compose.yml
  17. :wq
  18. # 启动,会自动更新
  19. docker-compose up -d