Docker部署Web应用(Django)

之前部署Web应用,没用docker,直接在服务器上部署,使用了fabric+nginx+supervisor+gunicorn部署,可查看我写过的一篇博客:部署Web应用。但后来了解了docker,为其“Build,Ship and Run Any App,Anywhere”的思想所折服,觉得这个太牛逼了,所以我也尝试一下自己用docker部署Web应用。本篇文章为了记录我用docker部署web应用的过程和心得,其中涉及到多个服务,如Nginx、Gunicorn、Python、Redis、Mysql等,每个服务都对应一个docker镜像,本文使用了docker-compose。

##一、网络架构
我用Visio大概画了一下我的网络架构图:

这里写图片描述

我构建的容器:

  1. Nginx容器;
  2. Web server容器
  3. Redis容器
  4. memcached容器
  5. MySQL容器

如果把所有应用都部署到一个应用中,可能会更简单,但不同容器之间就稍微复杂点。首先你要考虑好容器之间的依赖关系,比如nginx要依赖web服务器,如果web服务器不正常工作,那nginx就不能正常工作;web服务器要依赖于数据库等等;其次,要设置好容器间的数据共享问题。比如对于web应用的静态资源,怎么让nginx实现反向代理。

带着这些疑问,开始部署。

##二、环境:
准备docker的环境。

  1. Ubuntu 16.04 (主机环境)
  2. docker 17.06.0
  3. docker-compose 1.14.0
  4. 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
├── 
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值