本篇描述了使用多docker 布置django。
其中nginx 在一個docker里面,django+uwsgi在一個docker里面。
1 鏡像來源
nginx鏡像直接從docker hub 中拉取,docker pull nginx
diango鏡像采用 https://www.cnblogs.com/huanhuaqingfeng/p/11059168.html 中配置生成的django1鏡像
2,nginx conf 配置如下:
default.conf文件內容:
upstream django{
# server unix:///home/andrew/django/abuild/abulid.sock;
server 192.168.21.59:8022;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name 192.168.21.59;//宿主機ip地址
charset utf-8;
client_max_body_size 75M;
location /media {
alias /home/andrew/testdjango/media;
}
location /static {
alias /home/andrew/testdjango/static;
}
location / {
uwsgi_pass django;
include /etc/nginx/uwsgi_params;
}
}
3, uwsgi.ini 文件
[uwsgi]
socket = :8000
chdir = /home/andrew/testdjango/ //我創建的django測試工程testdjango的目錄
wsgi-file = testdjango/wsgi.py
touch-reload = /home/andrew/testdjango/reload
processes = 2
threads = 4
chmod-socket = 664
chown-socket = testdjango:nginx
vacuum = true
py-autoreload=1
4 , supervisord 工具使用
生成supervisord.conf文件:
echo_supervisord_conf >
/
etc
/
supervisord.conf
添加我們的工程到supervisord.conf中:
[program:testdjango]
command=/usr/local/bin/uwsgi --ini /home/andrew/testdjango/uwsgi.ini
directory=/home/andrew/testdjango/
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
5, 啟動django:
啟動django 鏡像:
docker run -it -p 8022:8000 -v /home/andrew/django/test/project:/home/andrew ubuntu:django1 bin/bash
-p: 8022:8000 表示把宿主機的8022 端口映射到容器的8000 端口上
-v /home/andrew/django/test/project:/home/andrew:/home/andrew/django/test/project這是宿主機的目錄,下面放着我的django工程,將其掛載到容器的/home/andrew目錄 上
啟動django工程:
在啟動的容器中執行如下命令
supervisorctl -c /etc/supervisord.conf restart testdjango
6, 啟動nginx:
啟動nginxjingx:
docker run -it -p 8089:80 --link practical_robinson:web -v /home/andrew/django/test/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf nginx bin/bash
--link practical_robinson:web:
practical_robinson: docker ps 查看,django1 鏡像啟動后生成的容器名字,當然也可以在運行django 鏡像時通過--name指定容器的名字。
web:隨意定義的
重啟nginx:
在容器中重啟nginx service nginx restart
7,在瀏覽器上方位 http://192.168.21.59:8089/admin
出現django的登錄頁面,ok ,成功了。
8,nginx 容器調用多個django 容器
1)修改default.conf
upstream django{
server 192.168.21.59:8022;
server 192.168.21.59:8023;
}
2) 啟動運行
docker run -it -p 8022:8000 -v /home/andrew/django/test/project:/home/andrew ubuntu:django1 bin/bash
docker run -it -p 8023:8000 -v /home/andrew/django/test/project:/home/andrew ubuntu:django1 bin/bash
docker run -it -p 8089:80 --link modest_chatelet:web1 --link cranky_liskov:web2 -v /home/andrew/django/test/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf nginx bin/bash