1. 程式人生 > >Djano + Nginx + docker配置與管理

Djano + Nginx + docker配置與管理

file corn 完成 項目 Beginner 一起 管理 add 文件

在配置這個服務之前,應該對docker的基本安裝與使用應該很熟悉了。下面開始直接不如正題

1.讓我們創建一個名為myproject的空目錄,並在src名稱內添加另一個文件夾src應該包含django項目。為了測試目的,讓一個簡單的django項目在名為mydjango的內部

2.讓我們在myproject中創建一個子目錄並命名為config讓我們把一個requirement.pip文件放到配置文件中,然後寫下這些行:

Django==1.10  
gunicorn==19.6.0  
psycopg2==2.6.2 

記住: 這裏面包含的是你第一次創建時會下載的安裝包,如果你少裝了或者不清楚安裝什麽,也可以在你的doker服務起來之後進去安裝,例如你的docker web服務的ID是123dsfsdf,你可以使用命令

# docker exec -it 123dsfsdf /bin/sh
# pip install ***

3.現在,做一個Dockerfile內部的myproject這應該包含以下幾行: 

FROM python:3.5  
ENV PYTHONUNBUFFERED 1  
RUN mkdir /config  
ADD /config/requirements.pip /config/  
RUN pip install -r /config/requirements.pip  
RUN mkdir /src;  
WORKDIR /src  

如果你對dockerfile裏面的命令有什麽不熟悉的可以先去了解了解docker的基本命令。

4.然後開始創建一個名為docker-compose.yml的myproject目錄,用於docker-compose up 啟動時執行的腳本路徑。

docker-compose.yml文件描述了制作您的應用的服務。在這裏,我們需要一個Web服務(Django + Gunicorn),一個數據庫(Postgres)和代理服務器(Nginx)。它還描述了這些服務將使用哪些Docker映像,它們將如何鏈接在一起,以及它們可能需要裝入容器內的任何卷。最後,該docker-compose.yml文件描述了這些服務公開哪些端口。有關此文件如何工作的更多信息,不要忘了 通過運行docker-compose

添加,具體如下

version: ‘2‘  
services:  
  nginx:
    image: nginx:latest
    container_name: ng01
    ports:
      - "8000:8000"
    volumes:
      - ./src:/src
      - ./config/nginx:/etc/nginx/conf.d
    depends_on:
      - web
  web:
    build: .
    container_name: dg01
    command: bash -c "python manage.py makemigrations && python manage.py migrate && gunicorn mydjango.wsgi -b 0.0.0.0:8000"
    depends_on:
      - db
    volumes:
      - ./src:/src
    expose:
      - "8000"

  db:
    image: postgres:latest
    container_name: ps01

註意:image 所使用的都是你本地已經存在的鏡像,如果不存在會去網上自行下載,不過這樣會很耽誤時間。

這樣一切結束後,你會發現在你的服務器上啟動了三個服務dj01, ps01, ng01。

如果此時你還不是很明白項目的個文件存檔路徑的話,這裏列出自己的作為參考

── myproject
    ├── src
    │   ├── mydjango
    │   ├── manage.py
    ├── config
    │   ├── requirements.pip
    │   ├── nginx
    │      ├── mydjango.conf
    ├── Dockerfile
    └── docker-compose.yml

當讓。此時你的web還是不能訪問你的外網環境的,需要你在nginx下自行配置

6.現在讓我們寫一個名為myproject的config文件夾nginx 配置文件,並將其放在一個名為nginx的子目錄中mydjango.conf

upstream web {  
  server web:8000;
}

# portal
server {  
  location / {
        proxy_pass http://web/;
    }
  listen 80;
  server_name localhost;
}

這樣恭喜你完成了整個服務的部署

最後提供幾個命令用於查看docker

用於shell訪問

#Nginx
docker exec -ti nginx bash

#Web
docker exec -ti web bash

#Database
docker exec -ti db bash 

用於日誌

#Nginx
docker-compose logs nginx  
#Web
docker-compose logs web  
#DB
docker-compose logs db  

  

 

 



Djano + Nginx + docker配置與管理