docker部署Django应用
方式一:基于python基础镜像
# 第一种方式:基于python基础镜像来做
cd /home
mkdir myproject
cd myproject
docker run -di --name=myproject -p 8080:8080 -v /home/myproject:/home python:3.6
#mac/linux window:xshell拖进去
scp django_test.zip root@101.133.225.166:/home/myproject
# 解压:uzip (安装)yum install -y unzip zip
# 进入容器I
docker exec -it myproject /bin/bash
# 切到项目路径下:安装依赖
pip install -r requirement.txt
# pip list
apt-get update
apt-get vim
# setting.py 改成下面
ALLOWED_HOSTS = ['*']
# 运行项目(wsgiref)
python manage.py runserver 0.0.0.0:8080
# 换uwsgi跑
pip install uwsgi
# 在项目根路径下创建一个uwsgi.ini 文件,写入
[uwsgi]
#配置和nginx连接的socket连接
socket=0.0.0.0:8080
#也可以使用http
#http=0.0.0.0:8080
#配置项目路径,项目的所在目录
chdir=/home/django_test
#配置wsgi接口模块文件路径
wsgi-file=django_test/wsgi.py
#配置启动的进程数
processes=4
#配置每个进程的线程数
threads=2
#配置启动管理主进程
master=True
#配置存放主进程的进程号文件
pidfile=uwsgi.pid
#配置dump日志记录
daemonize=uwsgi.log
#启动,停止,重启,查看
uwsgi --ini uwsgi.ini #启动
lsof -i :8001 #按照端口号查询
ps aux | grep uwsgi #按照程序名查询
kill -9 13844 #杀死进程
uwsgi --stop uwsgi.pid #通过uwsg停止uwsgi
uwsgi --reload uwsgi.pid #重启
# nginx转发
mkdir -p nginx/conf nginx/html nginx/logs
在conf目录下新建nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
#uwsgi_pass 101.133.225.166:8080;
proxy_pass http://101.133.225.166:8080;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
docker run --name nginx -id -p 80:80 -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/html:/etc/nginx/html -v /home/nginx/logs:/var/log/nginx nginx
# 在 python的docker中用uwsgi跑起项目来即可
外部访问:http://101.133.225.166/
方式二:基于dockerfile
# 第二种方式:dockerfile
# 写一个dockerfile即可
FROM python:3.6
MAINTAINER lqz
WORKDIR /home
RUN pip install django==1.11.9
RUN pip install uwsgi
EXPOSE 8080
CMD ["uwsgi","--ini","/home/django_test/uwsgi.ini"]
# 这句命令,是后台执行的,不会夯住,容器里面就停了
# dockerfile路径下要有一个django_test.tar
#构建镜像
docker build -t='django_1.11.9' .
# 运行容器
docker run -di --name=mydjango -p 8080:8080 -v /home/myproject:/home django_1.11.9
# 以后只需要从git上拉下最新代码,重启,完事(最新代码)