Djano + Nginx + docker配置与管理

在配置这个服务之前,应该对docker的基本安装与使用应该很熟悉了。下面开始直接不如正题

1.让我们创建一个名为myproject的空目录,并在src名称内添加另一个文件夹。src应该包含django项目。为了测试目的,让一个简单的django项目在名为mydjango的内部。

2.让我们在myproject中创建一个子目录并命名为config。让我们把一个requirement.pip文件放到配置文件中,然后写下这些行:

1Django==1.10 2gunicorn==19.6.0 3psycopg2==2.6.2

记住: 这里面包含的是你第一次创建时会下载的安装包,如果你少装了或者不清楚安装什么,也可以在你的doker服务起来之后进去安装,例如你的docker web服务的ID是123dsfsdf,你可以使用命令

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

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

1FROM python:3.5 2ENV PYTHONUNBUFFERED 1 3RUN mkdir /config 4ADD /config/requirements.pip /config/ 5RUN pip install -r /config/requirements.pip 6RUN mkdir /src; 7WORKDIR /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 添加,具体如下

1version: '2' 2services: 3 nginx: 4 image: nginx:latest 5 container_name: ng01 6 ports: 7 - "8000:8000" 8 volumes: 9 - ./src:/src 10 - ./config/nginx:/etc/nginx/conf.d 11 depends_on: 12 - web 13 web: 14 build: . 15 container_name: dg01 16 command: bash -c "python manage.py makemigrations && python manage.py migrate && gunicorn mydjango.wsgi -b 0.0.0.0:8000" 17 depends_on: 18 - db 19 volumes: 20 - ./src:/src 21 expose: 22 - "8000" 23 24 db: 25 image: postgres:latest 26 container_name: ps01

注意:image 所使用的都是你本地已经存在的镜像,如果不存在会去网上自行下载,不过这样会很耽误时间。

这样一切结束后,你会发现在你的服务器上启动了三个服务dj01, ps01, ng01。

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

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

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

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

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

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

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

用于shell访问

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

用于日志

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

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Djano + Nginx + docker配置与管理 - HelloWorld