前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用docker搭建Django框架与Nginx多域名配置

使用docker搭建Django框架与Nginx多域名配置

作者头像
用户2475223
发布2019-12-17 16:05:24
1.8K0
发布2019-12-17 16:05:24
举报
文章被收录于专栏:codersamcodersam

搭建之前的准备工作:

  1. Docker镜像 Python3.5 Mysql:5.7 nginx:alpine
  2. 框架及拓展 Django框架 mysqlclient

进入CMD执行docker pull 镜像名称:版本  拉取所需的镜像到本地

构建Django镜像及容器

镜像准备完毕后,建立如下目录:

代码语言:javascript
复制
/code # 根目录
/code/docker # docker文件目录
/code/docker/django # 需要构建django镜像的文件目录
/code/docker/nginx # nginx虚拟域名配置目录
/code/static # 静态目录(可以配置vue或纯html的客户端目录)

构建django镜像所需文件

/code/docker/django/Dockerfile

代码语言:javascript
复制
FROM python:3.5 # 来源镜像
ENV PYTHONUNBUFFERED 1

RUN mkdir /app # 创建目录
RUN mkdir /app/db 
RUN mkdir /app/config
ADD ./requirements.txt /app/config/ # 添加本地文件到容器目录
RUN pip install -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com -r /app/config/requirements.txt # pip安装框架及拓展
WORKDIR /app # 每次进入容器的工作目录

/code/docker/django/requirements.txt

代码语言:javascript
复制
Django
mysqlclient

nginx虚拟域名配置文件

/code/docker/nginx/django-index.conf

代码语言:javascript
复制
server {
        listen        80;
        server_name  youhostname;
        root   "/usr/share/nginx/html/hall";
        location / {
            # try_files $uri $uri/ /index.html =404;
			index index.html;
        }
        location = /50x.html {
			root   /usr/share/nginx/html;
		}
}

/code/docker/nginx/django-admin.conf

代码语言:javascript
复制
server {
        listen        80;
        server_name  youhostname;
        root   "/usr/share/nginx/html/admin";
		client_max_body_size 5M;
		keepalive_timeout 5;
        location /public {
		index index.html;
	}
	location / {
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		# enable this if and only if you use HTTPS
		# proxy_set_header X-Forwarded-Proto https;
		proxy_set_header Host $host;
		# we don't want nginx trying to do something clever with
		# redirects, we set the Host: header above already.
		proxy_redirect off;
		proxy_pass http://django-demo:8890;  # 转发到django处理请求
	}
		
}

创建docker-compose.yml文件

/code/docker/docker-compose.yml

代码语言:javascript
复制
version: '3' # docker-compose版本
services:
  db: # 数据库
    image: mysql:5.7 # 镜像和版本号
    ports:
        - "33060:3306" # 映射端口
    environment:
        MYSQL_ROOT_PASSWORD: "root" 
        MYSQL_USER: "root"
        MYSQL_PASSWORD: "root"
        MYSQL_DATABASE: "django"
       
  python-dome: # docker-compose编排名称,一般同微服务名称,注意不要与其他服务重名
    # image: "django:1.9.5" # docker镜像名及版本
    build: ./django
    container_name: django-demo # docker容器名
    # restart: always
    ports: # 映射端口
      - "8890:8890"
    volumes: # 挂载目录
      - ../:/app
    environment:  # 配置环境变量
      - TZ=Asia/Shanghai  # 设置时区
    command: bash -c "python /app/mysite/manage.py runserver 0.0.0.0:8890"  # 设置启动命令
    links:
        - db
    depends_on:
        - db   
  nginx: # docker-compose编排名称,一般同微服务名称,注意不要与其他服务重名
    # build: ./nginx
    image: "nginx:alpine"
    # restart: always
    ports: # 映射端口
      - "8891:80"
    volumes: # 挂载目录
      - ../static:/usr/share/nginx/html/static
      - ../mysite:/usr/share/nginx/html/admin
      - ./nginx:/etc/nginx/conf.d
    environment:  # 配置环境变量
      - TZ=Asia/Shanghai  # 设置时区
    links:
        - python-dome
    depends_on:
        - python-dome

在命令行进入/code/docker/django目录,执行 docker-compose build构建django镜像到本地,完成会返回success

docker_python-dome:latest就是镜像名称 构建完成后将自己的项目复制过来或创建新项目 新项目命令如下:

代码语言:javascript
复制
 # 进入容器
docker run -it -v /code:/app docker_python-dome:latest /bin/bash
# 进入容器后执行
django-admin startproject mysite &&  python ./mysite/manage.py migrate

退出容器,进入/code/docker 执行 docker-compose up -d

宿主机访问docker容器中nginx配置的虚拟域名

打开CMD执行命令ipconfig

hosts文件中配置图中的ip地址与域名映射。浏览器访问即可。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年8月9日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 构建Django镜像及容器
    • 构建django镜像所需文件
      • nginx虚拟域名配置文件
        • 创建docker-compose.yml文件
        • 宿主机访问docker容器中nginx配置的虚拟域名
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档