docker实战 容器互联的一种方法、docker运行django nginx 并相互链接

版权声明:本文为博主原创文章,未经博主允许不得转载。 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的容器来处理。

猜你喜欢

转载自blog.csdn.net/haeasringnar/article/details/82925672