Djano + Nginx + docker配置与管理

在配置这个服务之前,应该对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,你可以使用命令

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

3.现在,做一个Dockerfile内部的myproject这应该包含以下几行: 

1
2
3
4
5
6
7
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 添加,具体如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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。

如果此时你还不是很明白项目的个文件存档路径的话,这里列出自己的作为参考

1
2
3
4
5
6
7
8
9
10
── myproject
    ├── src
    │   ├── mydjango
    │   ├── manage.py
    ├── config
    │   ├── requirements.pip
    │   ├── nginx
    │      ├── mydjango.conf
    ├── Dockerfile
    └── docker-compose.yml

当让。此时你的web还是不能访问你的外网环境的,需要你在nginx下自行配置

6.现在让我们写一个名为myproject的config文件夹nginx 配置文件,并将其放在一个名为nginx的子目录中mydjango.conf

1
2
3
4
5
6
7
8
9
10
11
12
upstream web { 
  server web:8000;
}
 
# portal
server { 
  location / {
        proxy_pass http://web/;
    }
  listen 80;
  server_name localhost;
}

这样恭喜你完成了整个服务的部署

最后提供几个命令用于查看docker

用于shell访问

1
2
3
4
5
6
7
8
#Nginx
docker exec -ti nginx bash
 
#Web
docker exec -ti web bash
 
#Database
docker exec -ti db bash

用于日志

1
2
3
4
5
6
#Nginx
docker-compose logs nginx 
#Web
docker-compose logs web 
#DB
docker-compose logs db 

  

 

 



 

 

posted @   Dwyane.wang  阅读(223)  评论(0编辑  收藏  举报
编辑推荐:
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
阅读排行:
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 【译】我们最喜欢的2024年的 Visual Studio 新功能
· 如何打造一个高并发系统?
点击右上角即可分享
微信分享提示