版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haeasringnar/article/details/82925672
这里使用django + nginx做实例,前期准备:
1、一个可以运行的django工程
2、一个运行django的镜像/容器
3、一个运行nginx的镜像/容器
1、制作一个属于自己的运行django的镜像
拉取官方Ubuntu镜像
docker pull ubuntu:16.04
运行一个容器
docker run -it ubuntu:16.04 /bin/bash
# 此命令执行后会进入一个容器伪终端,然后在终端内操作
进入容器后安装需要的软件
apt-get update
apt-get install net-tools
apt-get install iputils-ping
apt-get install iproute2
ape-get install vim
# 安装Python3.5
apt-get install python3
# 如果需要安装Python3.6
apt-get install software-properties-common python-software-properties
add-apt-repository ppa:jonathonf/python-3.6
apt-get update
apt-get install python3.6
# 安装pip
apt-get install python3-pip
退出伪终端后查看容器id
找到你的容器id CONTAINER ID
docker ps -a
制作成自己的镜像
docker commit -m="myubuntu" -a="my" e218edb10161(容器id) myubuntu:v2
2、拉取官方的nginx镜像,并制作成自己的镜像
拉取镜像
docker pull nginx
进入容器
docker run -d nginx
docker exec -it dd61d7354d0a(开启的nginx容器id) /bin/bash
编辑/etc/nginx/conf.d/defluat.conf 新增一下内容
server {
listen 9001;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers Authorization,Origin,X-Requested-With,Content-Type,Accept;
#add_header Access-Control-Allow-Methods POST,GET,PATCH,PUT,DELETE,OPTIONS,VIEW;
add_header Access-Control-Allow-Methods POST,GET,PATCH,PUT,DELETE;
add_header Access-Control-Allow-Credentials true;
client_max_body_size 100m;
location / {
proxy_pass http://192.168.1.133:8000; #这个是你的安装docker的机器的IP地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Protocol $scheme;
}
}
制作镜像
docker commit -m="mynginx" -a="my" dd61d7354d0a(开启的nginx容器id) mynginx:v2
3、制作django服务
使用制作好的Python镜像
docker run -itd --name mypython -p 8000:8000 -v $PWD/yourproject:/usr/src/myapp myubuntu:v2
# -v $PWD/yourproject:/usr/src/myapp:表示挂载目录,将你的目录挂载到容器内/usr/src/myapp下
会开启一个伪终端,伪终端内操作
# 前提是意义安装好了需要的Python三方库
python3 manage.py runserver 0.0.0.0:8000
好了,在外部浏览访问看看是否成功
4、启动 制作好的nginx
docker run -d --name mynginx -p 8080:80 -p 9001:9001 mynginx:v2
然后浏览器访问127.0.0.1:8080看是否成功出现nginx欢迎界面,成功后访问127.0.0.1:9001 就会访问到没有mypython的容器了
分析实现的原理:首先通过nginx可以指向ip:9001 的地址,然后它会交给ip:8000来处理,也就是交给mypython的容器来处理。