之前部署Web应用,没用docker,直接在服务器上部署,使用了fabric+nginx+supervisor+gunicorn部署,可查看我写过的一片博客:部署Web应用。但后来了解了docker,为其“Build,Ship and Run Any App,Anywhere”的思想所折服,觉得这个太牛逼了,所以我也尝试一下自己用docker部署Web应用。本篇文章为了记录我用docker部署web应用的过程和心得。
一、网络架构
我用Visio大概画了一下我的网络架构图:
我构建的容器:
- Nginx容器;
- Web server容器
- Redis容器
- memcached容器
- MySQL容器
如果把所有应用都部署到一个应用中,可能会更简单,但不同容器之间就稍微复杂点。首先你要考虑好容器之间的依赖关系,比如nginx要依赖web服务器,如果web服务器不正常工作,那nginx就不能正常工作;web服务器要依赖于数据库等等;其次,要设置好容器间的数据共享问题。比如对于web应用的静态资源,怎么让nginx实现反向代理。
带着这些疑问,开始部署。
二、环境:
准备docker的环境。
- Ubuntu 16.04 (主机环境)
- docker 17.06.0
- docker-compose 1.14.0
- compose file 版本: version 3
对于docker的作用和介绍可参考官网:Docker service。
要注意你的docker版本以及composefile版本,因为不同的版本,语法可能略有不同。我之前在配置共享数据卷的时候就遇到过坑,比如在version 3中删掉了volumes_from,我还不知道有版本差异,所以怎么配置都不对。更详细的请看官网:dockerfile 版本。
1、工程结构
├── blog │ ├── account│ ├── blog│ ├── dailyblog│ ├── Dockerfile│ ├── gunicorn.conf│ ├── manage.py│ ├── media│ ├── requirements.txt│ ├── start.sh│ └── static├── docker-compose.yml└── nginx ├── Dockerfile └── nginx.conf
评论列表()