使用Docker搭建Django,Nginx,R,Python部署环境的方法
本文介绍了使用Docker搭建Django,Nginx,R,Python部署环境的方法,分享给大家,具体如下:
基本环境:
- Ubuntu16.10
- docker17.06.0-ce
压缩自己的项目文件
1.这里需要注意的是,在压缩的时候,也需要把自己的需要的Python包写在requirement.txt,这样搭建环境的时候才会知道你需要什么包,才能一起安装,我的项目的requirement.txt内容如下。
Django==1.10.5 rpy2==2.8.5 PyMySQL==0.7.9 numpy==1.13.0 pandas==0.20.2 scikit-learn==0.18.1 scipy==0.19.0 uwsgi
2.更改自己的settings.py,为Nginx服务器代理设置部署环境
更改的内容如下
STATIC_ROOT=os.path.join(BASE_DIR,'collect_static') ALLOWED_HOST=['*']
注意:这里不能将部署的环境与开发环境的静态文件相同,否则会引起错误。
修改好后运行如下命令:
pythonmanage.pycollectstatic
这个时候就可以安心压缩文件了
tarczvfFileName.tarDirName
构建web环境
1.将打包好的项目文件放入web文件夹中
cp/home/haoyu/AAPlatform.tar.
2.编写Dockerfile
这里主要是搭建基础环境
#基础镜像 FROMubuntu:16.10 FROMdaocloud.io/python:3.5 #维护者信息 MAINTAINERhaoyuADDAAPlatform.tar/usr/src/ #app所在目录 WORKDIR/usr/src/AAPlatform ENVLD_LIBRARY_PATH=/usr/local/lib RUNapt-keyadv--keyserverkeyserver.ubuntu.com--recv-keys40976EAF437D05B5 RUNapt-keyadv--keyserverkeyserver.ubuntu.com--recv-keys3B4FE6ACC0B21F32 RUNecho"debhttp://mirrors.tuna.tsinghua.edu.cn/ubuntu/yakketymainrestricted">/etc/apt/sources.list RUNecho"debhttp://mirrors.tuna.tsinghua.edu.cn/ubuntu/yakkety-updatesmainrestricted">>/etc/apt/sources.list RUNecho"debhttp://mirrors.tuna.tsinghua.edu.cn/ubuntu/yakketyuniverse">>/etc/apt/sources.list RUNecho"debhttp://mirrors.tuna.tsinghua.edu.cn/ubuntu/yakkety-updatesuniverse">>/etc/apt/sources.list RUNecho"debhttp://mirrors.tuna.tsinghua.edu.cn/ubuntu/yakketymultiverse">>/etc/apt/sources.list RUNecho"debhttp://mirrors.tuna.tsinghua.edu.cn/ubuntu/yakkety-updatesmultiverse">>/etc/apt/sources.list RUNecho"debhttp://mirrors.tuna.tsinghua.edu.cn/ubuntu/yakkety-backportsmainrestricteduniversemultiverse">>/etc/apt/sources.list RUNecho"debhttp://mirrors.tuna.tsinghua.edu.cn/ubuntu/yakkety-securitymainrestricted">>/etc/apt/sources.list RUNecho"debhttp://mirrors.tuna.tsinghua.edu.cn/ubuntu/yakkety-securityuniverse">>/etc/apt/sources.list RUNecho"debhttp://mirrors.tuna.tsinghua.edu.cn/ubuntu/yakkety-securitymultiverse">>/etc/apt/sources.list RUNapt-getupdate RUNapt-getinstall-ymake RUNecho"debhttp://cran.rstudio.com/bin/linux/ubuntuyakkety/">>/etc/apt/sources.list RUNapt-keyadv--keyserverkeyserver.ubuntu.com--recv-keys51716619E084DAB9 RUNapt-getupdate RUNapt-getinstall-yr-base#r-base-devr-cran-mgcvr-base-corer-base-htmlr-recommended #安装app所需依赖 RUNpipinstall--no-cache-dir-rrequirements.txt-ihttp://mirrors.aliyun.com/pypi/simple/--trusted-hostmirrors.aliyun.com
基本上Django和R搭建的环境都在这了。
2.编写start.sh
这里是要把docker的Django运行起来
内容如下:
#!/bin/bash # dockerbuild-taaplatform/django-app. dockerrun--namedjango\ -v/usr/src/AAPlatform\ -v/usr/src/AAPlatform/collect_static\ -p12000:8000\ -dfeiyu/django-app/usr/local/bin/uwsgi--http:8000--chdir/usr/src/AAPlatform-wAAPlatform.wsgi #-daaplatform/django-app/usr/local/bin/gunicornmyblog.wsgi:application-w1-b:8000
搭建Nginx环境
1.编写Dockerfile文件
配置Nginx相关的环境
FROMdaocloud.io/nginx MAINTAINERhaoyuRUNrm/etc/nginx/conf.d/default.conf ADDnginx-conf//etc/nginx/conf.d/
2.编写Server配置文件
需要将系统默认的配置文件更改一下
在nginx-conf中:
server{ listen80; server_namelocalhost; charsetutf-8; root/usr/src/AAPlatform; access_log/var/log/nginx/django.log; location^~/static{ alias/usr/src/AAPlatform/collect_static; } location/{ proxy_passhttp://web:8000; proxy_set_headerHost$host; proxy_set_headerX-Real-IP$remote_addr; proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for; } }
保证Nginx环境能够构建起来。
3.编写start.sh
让docker运行起来
#!/bin/bash # dockerbuild-tnginx. dockerrun--namenginx-server\ --linkdjango:web\ -v/www/collect_static\ --volumes-fromdjango\ -p8888:80\ -dnginx
整个环境结合
1.构建docker-start.sh
启动web和Nginx
#!/bin/bash # cd./web echo"startweb--------------------------" ./start.sh cd../nginx echo"startnginx-------------------------" ./start.sh
2.编写stop.sh
关闭docker
#/bin/bash # sudodockerkill$(dockerps-a-q) sudodockerrm$(dockerps-a-q)
运行测试
1.运行sh文件
$./docker-start.sh
2.访问网站
http://127.0.0.1:8888/login
注意:要访问的是Nginx服务器。
将部署好的镜像文件导出
1.dockersave
dockersave00273588addb-oaaplatform.taraaplatform/django-app:latest
2.dockerload
dockerload以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。