備注:文中"> "行表示執(zhí)行的命令語句
備注:文中"> "行表示執(zhí)行的命令語句
備注:文中"> "行表示執(zhí)行的命令語句
前期準(zhǔn)備
- 一臺(tái)系統(tǒng)為ubuntu主機(jī),并安裝好docker饺蚊。
- 能擼碼的雙手
開始動(dòng)手
- pull一個(gè)基本系統(tǒng)鏡像到本地
執(zhí)行以下命令:
> sudo docker pull ubuntu:14.04
//意思是從dockerhub拉取一個(gè)ubuntu14.04的系統(tǒng)鏡像到本地萌踱,網(wǎng)絡(luò)慢钩杰,需耐心等待逝慧。
> sudo docker images //查看本地docker鏡像,會(huì)看到剛才pull的ubuntu鏡像
- 進(jìn)入ubuntu鏡像
執(zhí)行以下命令:
> sudo docker run -it ubuntu:14.04
- 安裝相關(guān)程序
執(zhí)行以下命令:
> vi /etc/apt/source.list // 修改apt源
輸入以下源:
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
> apt-get update
> apt-get install vim
> apt-get install python3-pip //該鏡像默認(rèn)自帶python3所以要安裝python3-pip
> vim ~/.pip/pip.conf //修改pip源
輸入以下pip源:
[global]
index-url = http://pypi.douban.com/simple
trusted-host = pypi.douban.com
disable-pip-version-check = true
timeout = 120
> pip3 install uwsgi // 安裝uwsgi
> apt-get install nginx //安裝nginx
> pip3 install django==1.8.3 //安裝1.8.3版本的django
- 創(chuàng)建一個(gè)django項(xiàng)目
> sudo cd root
> sudo django-admin startproject DockerDjangoTest
- 創(chuàng)建uwsgi配置文件
> vim /root/docker-django-test-uwsgi.ini
輸入以下內(nèi)容:
[uwsgi]
master = true
chdir = /root/DockerDjangoTest //django項(xiàng)目路徑
processes = 4
http = 0.0.0.0:8888 //uwsgi在鏡像中該項(xiàng)目的運(yùn)行端口
daemonize = /root/uwsgi.log
wsgi-file = DockerDjangoTest/wsgi.py //django中的wsgi文件
daemonize = /root/docker-django-test-uwsgi.log
- 配置nginx
> sudo vim /etc/nginx/conf.d/docker-django-test-nginx.conf
輸入以下內(nèi)容:
upstream docker-django-test {
server 0.0.0.0:8888; //指向uwsgi的地址
}
server {
listen 8010;
server_name 0.0.0.0;
charset utf-8;
client_max_body_size 75M;
location /media {
alias /root/DockerDjangoTest/media;
}
location /static {
alias /root/DockerDjangoTest/static;
}
location / {
proxy_pass http://docker-django-test;
}
}
- 重啟nginx
> sudo service nginx restart
- 寫啟動(dòng)腳本
> sudo vim /root/start-django.sh
輸入以下內(nèi)容:
#! / bin/sh
service nginx restart;
uwsgi --ini /root/docker-django-test-uwsgi.ini;
tail -100f /var/log/nginx/access.log;
// 上行有重要作用苔严,使得到時(shí)候docker啟動(dòng)該鏡像并運(yùn)該腳本的時(shí)候甩恼,容器會(huì)繼續(xù)執(zhí)行蟀瞧,而不會(huì)退出。
//(因?yàn)榍斑厓尚袨楹笈_(tái)程序条摸,執(zhí)行完就沒有了悦污,docker會(huì)認(rèn)為是容器命令執(zhí)行完畢,而把容器關(guān)掉钉蒲。而有了最后一行的前臺(tái)命令切端,容器就會(huì)持續(xù)運(yùn)行)
- 修改啟動(dòng)腳本權(quán)限
sudo chmod 777 /root/start-django.sh
- 退出容器,并commit容器為鏡像
> exit
> sudo docker ps -a
找到最新一條記錄的id
> sudo docker commit -m "init django env on ubuntu:14.04" [id] [name]/[image-name]
- 在主機(jī)中重新運(yùn)行該容器
> sudo docker run -d -p 0.0.0.0:8010:8010 [name]/[image-name] sh /root/start-django.sh
// 意思是以守護(hù)進(jìn)程的形式啟動(dòng)鏡像顷啼,并且把本機(jī)的8010端口映射到容器中的8010
//(之前配置的nginx監(jiān)聽的端口) 并執(zhí)行sh /root/start-django.sh腳本(啟動(dòng)django相關(guān)服務(wù))
- 大功告正踏枣,瀏覽器中訪問。
瀏覽器訪問:http://127.0.0.1:8010
若是服務(wù)器上配置的钙蒙,則訪問:http://your server ip:8010
番外篇
** 如何將自己的docke鏡像上傳到dockerhub **
- 首先需要在https://hub.docker.com/注冊(cè)賬號(hào)
- 在主機(jī)上執(zhí)行
sudo docker login
按照提示登錄自己注冊(cè)的賬號(hào) - 執(zhí)行
sudo docker images
查看本地已有的鏡像 - 執(zhí)行
sudo docker push [image]:tag
//比較慢 - 完畢茵瀑,可登錄 https://hub.docker.com/查看和設(shè)置自己上傳的鏡像
** 提供一個(gè)基本版django生產(chǎn)環(huán)境的docker鏡像 **
https://hub.docker.com/r/kering/django-env/