docker实现多容器配置Django+MySQL+NGINX

一、安装docker并pull合适的Ubuntu镜像

需要修改docker的镜像源进行加速,修改之后建议pull Ubuntu的版本为14.04(trusty),这个版本的进行MySQL和NGINX安装时不容易出现错误,16.04会出现修改完容器镜像源无法update,update之后无法安装MySQL的问题
sudo docker pull ubuntu:trusty

二、创建三个容器分别命名为MySQL-node,NGINX-node,Django-node

对于这三个容器,Django-node会调用MySQL-node的数据库服务,所以需要在创建django-node容器的时候添加link参数链接到MySQL-node上,同样的,对于NGINX-node,NGINX要代理Django的服务,所以需要在创建NGINX-node的时候添加link参数链接到Django-node上
sudo docker run -itd --name mysql-node ubuntu:trusty
sudo docker run -itd --name django-node --link mysql-node:mysql ubuntu:trusty
sudo docker run -itd --name nginx-node --link django-node:django ubuntu:trusty

三、修改容器的镜像源提升安装和更新速度(以MySQL-node为例

从宿主机将sources.list文件复制到容器上
sudo docker cp /etc/apt/sources.list mysql-node:/home
进入容器备份好原本的sources.list文件,并使用新的sources.list进行替换
mv /etc/apt/sources.list /etc/apt/sources.list.backup
cp /home/sources.list  /etc/apt/sources.list
清理无用包
apt-get clean
开始更新
apt-get update

四、配置MySQL-node容器的MySQL服务

安装MySQL服务
apt-get install mysql-server
安装MySQL客户端
apt-get install mysql-client
安装MySQL依赖
apt-get install libmysqlclient-dev
到这里MySQL安装完毕,使用以下命名查看服务是否启动
netstat -tap
设置远程登录权限,youpassword为设置的密码
grant all privileges on *.* to root@'%' identified by 'youpassword';
flush privileges;
创建一个测试用数据库
create database `testdb`;

五、配置Django-node容器的服务

安装pip工具
apt-get install pip3
安装django
pip3 install django -i https://pypi.douban.com/simple/
下载pymysql包
git clone https://github.com/PyMySQL/PyMySQL
docker容器中自带的setuptools需要进行更新才可以使用,否则会出现版本过低的问题
pip3 install --upgrade setuptools
安装pymysql
python3 setup.py install
创建一个测试用Django项目
django-admin.py startproject testfile
编辑init.py文件,添加以下内容,使用pymysql替换mysqldb作为MySQL驱动
import pymysql
pymysql.install_as_MySQLdb()
修改setting文件的db设置
DATABASES = {
    'default':{
      'ENGINE':'django.db.backends.mysql',
      'NAME':'testdb',
      'HOST':'mysql',
      'USER':'root',
      'PASSWORD':'youpassword',
      'PORT':'3306'; 
    }
}
需要注意的是host部分使用的是mysql-node在本容器下的主机名,可以通过cat /etc/hosts文件查看运行Django项目
cat /etc/hosts
运行Djangoxiangmu
python3 ./manage.py runserver
在做反向代理的时候,NGINX代理的是Django的uwsgi,所以需要现在Django-node上安装uwsgi
pip3 install uwsgi
新建一个名为uwsgi.ini的文件
vim uwsgi.ini
在文件中写入uwsgi的配置信息,这样做可以更好的进行维护
[uwsgi]
chdir = /home/PyMySQL/testfile#chdir用来跳转到Django的目录下
module = testfile.wsgi
socket = :80
processes = 4
threads = 10
enable-threads
master-as-root
使用uwsgi启动Django项目
uwsgi --ini /home/PyMySQL/testfile/uwsgi.ini 

六、NGINX-node服务配置

使用宿主机下载NGINX包
wget http://nginx.org/download/nginx-1.15.1.tar.gz
拷贝到容器中
sudo docker cp ./nginx-1.15.1.tar.gz nginx-node:/home/
解压
tar -zvxf nginx-1.15.1.tar.gz
安装编译器
apt-get install gcc
安装支持正则的pcre库
apt-get install libpcre3 libpcre3-dev
安装处理http的zlib库
apt-get install zlib1h-dev
安装支持openssl的库
apt-get install openssl libssl-dev
安装make工具
apt-get install make
开始编译
./configure
生成安装文件
make
开始安装
make install
启动并查看是否启动成功
netstat -tap
进入安装目录下的conf文件夹,首先对nginx.conf进行备份修改conf文件的location,使其指向uwsgi这里暴露的端口要和uwsgi.ini的配置的一致
location / {
         include uwsgi_params;
         uwsgi_pass django:80;
}
启动NGINX的服务
./usr/local/nginx/sbin/nginx
登录网站查看是否开启服务器
网站首页
右键或者点击F12,切换到network选项,F5刷新页面,查看当前页面服务器类型
查看response header的server属性
配置完毕
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容