使用Docker-compose离线部署Django应用的方法

2020-06-17 06:39:20易采站长站整理

Starting db ... done
Starting web ... done


$ docker-compose stop
Stopping mysite_web ... done
Stopping mysite_db ... done

你看这里的服务停止和启动的顺序都是有规律的启动的时候被依赖的服务先启动然后启动依赖它的服务,挺值服务的时候刚好相反。待服务正常运行后,可以访问浏览器测试一下服务是否正常启动。

保存容器

如果服务一切正常,我们就要把当前的容器保存起来,为部署到新平台上做准备。 注意:  这里要使用save保存镜像,使用save是包括容器之间的连接状态等信息的,如果用export导出镜像到生产环境是不能使用docker-compose恢复服务的。


$ docker save -o mysql.tar mysql:5.7
$ docker save -o mysite.tar mysite_web:latest

当以上命令执行成功后会在当前目录生成两个tar文件,再加上project目录的Dockerfile和docker-compose.yml文件放在一起准备迁移到生产机器上。

安装生产环境的 Docker-ce 和 docker-compose

由于生产环境是CentOS,可以直接使用yum安装


$ sudo yum install docker-ce

安装成功后,参考开发环境把docker-compose部署到生产服务器上。

发送容器文件并运行

使用scp或者其他工具把mysql.tar、mysite.tar、Docker-compose.yml以及项目文件夹发送到生产服务器,并找一个合适的文件夹存放这些文件,保持原来的目录结构。 我们先把两个镜像恢复到生产服务器上


$ docker load -i mysql.tar
$ docker load -i mysite_web.tar

等待一小会儿执行完成,可以看到当前服务器已经有这两个镜像了。


REPOSITORY TAG IMAGE ID CREATED SIZE
mysite_web latest 3989acbcc3c9 2 days ago 983MB
mysql 5.7 e47e309f72c8 3 weeks ago 372MB

在执行构建容器以前我们还要对docker-compose.yml做个简单的修改。你也注意到,生产服务器没有互联网,所以不能再build镜像了,而且我们还把开发环境的镜像原样照搬了过来,所以这次web服务改为从镜像运行就行了,内容大致如下:


version: '3'
services:
db:
...
web:
image: mysite_web:latest
...

只要更改web中的build项删除,并加上一个image项,内容就是我们拷贝过来的那个镜像。稍后我们就可以构建容器并启动服务了。


$ docker-compose up -d

结果