制作django镜像环境(Commit方式)
下载Ubuntu
$ docker pull ubuntu
运行并进入容器
$ docker container run -it ubuntu /bin/bash
下载python
/# apt-get install python3
如遇到下载问题如下图
![e6ead29f2624ff58ead18cb3120e319e.png](https://i-blog.csdnimg.cn/blog_migrate/7156f79631122e5319073bc19740459f.png)
更新软件源,之后就可以正常下载python了
/# apt-get update
安装pip3工具
/# apt-get install python3-pip
修改pip下载的镜像源
/# apt-get install vim
/# mkdir ~/.pip
/# vim ~/.pip/pip.conf
[global]
index-url=http://pypi.tuna.tsinghua.edu.cn/simple/
[install]
trusted-host=pypi.tuna.tsinghua.edu.cn
在pip.conf文件写入镜像地址
![71fbed9bf17ea711280b8e48db6c7402.png](https://i-blog.csdnimg.cn/blog_migrate/d0de52eac3e99262d771bae20bd594ca.png)
安装Django相关库
/# pip3 install django
/# pip3 install pymysql
/# pip3 install uwsgi
/# pip3 install supervisor
![ef917ec3a34041da1500841c25708209.png](https://i-blog.csdnimg.cn/blog_migrate/994983f562c04af9fe0847b590a8500d.png)
测试
制作镜像
$ docker commit -m='python3+django3' -a='zn' 6492bd45dd18 ubuntu:django1
![59d5d394e451e65c0c04dfb357fba7f8.png](https://i-blog.csdnimg.cn/blog_migrate/78f3ba95cbdf80c784d1a5a446b34b62.png)
因为选择程序放在宿主机上,所以需要进行目录挂载。设置共享文件夹,注意共享文件夹名称会自动生成,但是其中不能包含大写字母和特殊字符?等,如存在请手动修改;常规->共享粘贴板需设置为主机到虚拟机。然后重启default。
![2d6910a56446884fb8adb2a6eae8304d.png](https://i-blog.csdnimg.cn/blog_migrate/0f3eb510c2b0ff40bebce7665f44b8bc.jpeg)
![806cc835e2bec0748390f55273c5c364.png](https://i-blog.csdnimg.cn/blog_migrate/6f42dc7c406439074d24ed552a6a11d1.jpeg)
$ docker-machine restart default
运行该容器并运行Django项目
$ docker container run -p 8083:8000 -it -v /web/:/home/project ubuntu:django1 /bin/bash
![1679c3723f5f6027663b93dcd931239e.png](https://i-blog.csdnimg.cn/blog_migrate/44df50faf9f7c21e81c7b77941559e4f.png)
浏览器访问网址 http://192.168.99.100:8083/admin 显示如下界面即为成功
![01a682eaa810352777f9b58da29fbcd6.png](https://i-blog.csdnimg.cn/blog_migrate/27c295d0e5a5b21493df3b11635195c3.png)
开始尝试nginx部署
nginx 在一个docker里面,django+uwsgi在一个docker里面,nginx容器就直接从docker hub下载,Django镜像就用上面生成的ubuntu:django1镜像
$ docker pull nginx
准备配置文件,以挂载方式加载到容器中
Nginx配置文件 default.conf
upstream django{
# server unix:///home/andrew/django/abuild/abulid.sock;
server 192.168.99.100:8083;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name 192.168.99.100;
charset utf-8;
client_max_body_size 75M;
location /media {
alias /home/project/mysite/media;
}
location /static {
alias /home/project/mysite/static;
}
location / {
uwsgi_pass django;
include /etc/nginx/uwsgi_params;
}
}
supervisord.conf
利用supervisord.conf工具生成supervisord.conf初始文件
echo_supervisord_conf > /etc/supervisord.conf
然后在文件末尾添加以下内容,在保存到宿主机中
[program:mysite]
command=/usr/local/bin/uwsgi --ini /home/project/mysite/uwsgi.ini
directory=/home/project/mysite/
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
uwsgi.ini
[uwsgi]
socket = :8000
chdir = /home/project/mysite/
wsgi-file = mysite/wsgi.py
touch-reload = /home/project/mysite/reload
processes = 2
threads = 4
chmod-socket = 664
chown-socket = mysite:nginx
vacuum = true
py-autoreload=1
启动django镜像
/home/project/mysite# supervisorctl -c supervisord.conf restart mysite
![8d3e702c108782e33af60828b31fe5ac.png](https://i-blog.csdnimg.cn/blog_migrate/8b80fcd782de006fd492e669c70fe213.png)
启动nginx镜像
$ docker container run -it -p 8089:80 --link 7575c5c6aa2a:web -v /web/nginx/conf/default.conf:etc/nginx/conf.d/defaule.conf nginx /bin/bash
重启服务
/# service nginx restart
![c9d2189fbcfec75409e03d5fe0be81dc.png](https://i-blog.csdnimg.cn/blog_migrate/b755aa617a0e00dc6b1ef025ff8fc09f.jpeg)
此时,可以浏览器访问 http://192.168.99.100:8089/admin 就可以看到后台登录界面了
![aac535e1da7e60a699db76a86dd50d15.png](https://i-blog.csdnimg.cn/blog_migrate/cb708d4731a97831f4408e96d6df921a.png)
下一篇会讲述一种更方便的方式生成镜像文件,管理多容器的生成启动