服务器没有外网
情况介绍:
现在通过todesk连接到一台电脑,这台电脑再通过ssh连接到要部署的服务器上,服务器是没有外网的,也没有docker-compose等软件,site、sql等镜像以及代码。
尝试:
-
下载离线docker-compose安装文件,再使用scp命令传输到服务器
-
安装docker,此时服务器有docker就没有尝试。
-
安装docker-compose
1.下载docker-compose https://github.com/docker/compose/releases/download/v2.1.1/docker-compose-linux-x86_64 2.将文件传输到服务器/usr/local/bin/目录下,此处要将文件名字重命名为docker-compose 3.对文件增加可执行权限 chmod +x /usr/local/bin/docker-compose 4.查看docker-compose版本 docker-compose -v
-
-
再将site镜像和sql镜像传输过去,因为没有外网,所以需要先将镜像打包成压缩包传输
docker save -o 要打镜像包的名称 镜像
例如
docker save -o docker_site.tar.gz t40site:latest
此处镜像名称也可以用id号替代,不过解压时会没有名称,需要再用tag命令重新打标签
-
此时site和sql镜像压缩包已经制作好,遇到新的问题,这台电脑和服务器之间网络连接很不稳定,经常断包,因为site的镜像有一个多G的大小。在使用scp多次尝试失败后,查到两种方法。
-
使用rsync命令,支持断点传输
rsync -av -e 'ssh -p 端口号' 文件名 用户名@地址:路径
尝试失败,因为服务器端口没有开放,不过应该可以在服务器上设置一下开放某个端口以便传输
-
尝试将大压缩包文件拆分成若干个小文件,分别传输,最后再合并
split -d -n 10 docker_site.tar.gz -d 表示划分文件使用数字后缀 -n 10表示将文件划分为10个小文件 生成文件为x00 x01 ... x09
再将生成10个文件逐个传输到服务器,然后合并大文件
cat x* > docker_site.tar.gz 意思是打开前缀是x的文件,再用>写入大文件
分别计算两台电脑上该压缩包的md5值,用来判断文件是否损坏
md5sum docker_site.tar.gz
-
-
将压缩包解压为镜像
docker load -i docker_site.tar.gz
此时查看镜像,可能出现name和tag都为none的情况,没关系,这是因为在打包成压缩包时使用的是id号,如果使用name:tag则不会。此时可以用tag命令再重新打个标签,后面记得在docker-compose.yml文件中修改。
-
此时,docker、docker-compose、镜像文件等基础都有了,再把代码传过去,就可以部署了。