1. 程式人生 > >docker實戰 容器互聯的一種方法、docker執行django nginx 並相互連結

docker實戰 容器互聯的一種方法、docker執行django nginx 並相互連結

這裡使用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的容器來處理。