美文网首页
基于docker部署django项目

基于docker部署django项目

作者: 咦咦咦萨 | 来源:发表于2020-10-14 16:32 被阅读0次

    首发:https://mchange.gitee.io

    背景

    最近用django做了个小工具,部署的时候,想着尽量简单易操作,所以就做个docker镜像吧。

    涉及到的工具版本如下:

    • vs code 1.50.0
    • Python 3.8.3
    • Django 3.0.5

    项目结构

    创建项目

    具体操作可以参考官方中文文档

    创建根目录:

    mkdir things-docker-wrapper
    

    进入 根目录 下,创建项目

    django-admin startproject things
    

    进入 things 项目文件夹,创建应用

    python manage.py startapp things_app
    

    到此为止,项目结构如下:

    |--things-docker-wrapper
        |--things
            |--things
            |--things_app
    

    集成Docker

    添加依赖文件

    项目根目录下 新建文件 requirements.txt

    Django==3.0.5
    

    添加自定义环境变量文件

    根目录 下,新建文件 .env:

    DEBUG=1
    SECRET_KEY=7+e=7_w30=re3#dp+!=dih(+ro&177777777!6(b66k@i(@mk#1
    DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1]
    EMAIL_HOST_PASSWORD=1234567
    

    我们可以将一些敏感信息在这里进行配置,然后修改 things > things > settings.py 文件中,相关字段的获取方式:

    DEBUG = int(os.environ.get("DEBUG", default=0))
    SECRET_KEY = os.environ.get("SECRET_KEY")
    ALLOWED_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS").split(" ")
    EMAIL_HOST_PASSWORD = os.environ.get("EMAIL_HOST_PASSWORD")
    

    添加Dockerfile文件

    项目根目录 下,新建 Dockerfile 文件:

    # pull official base image
    FROM python:3.8.3-alpine
    
    # set work directory
    WORKDIR /usr/src/app
    
    # set environment variables
    ENV PYTHONDONTWRITEBYTECODE 1
    ENV PYTHONUNBUFFERED 1
    
    # 设置时区
    ENV TZ Asia/Shanghai
    RUN apk add -U --no-cache tzdata && cp /usr/share/zoneinfo/${TZ} /etc/localtime \
        && echo ${TZ} > /etc/timezone
    
    # 换源
    RUN pip install -U pip
    RUN pip config set global.index-url http://mirrors.aliyun.com/pypi/simple
    RUN pip config set install.trusted-host mirrors.aliyun.com
    
    # install dependencies
    COPY ./requirements.txt .
    RUN pip install -r requirements.txt
    
    # copy project
    COPY . .
    

    添加docker-compose支持

    根目录 下,新建 docker-compose.xml文件:

    version: '3.7'
    
    services:
      web:
        build: ./things
        command: python manage.py runserver 0.0.0.0:8000 --noreload
        volumes:
          - ./things/:/usr/src/app/
        ports:
          - 58000:8000
        restart: always
        env_file:
          - ./.env
    

    项目结构

    到此为止,项目结构如下:

    |--things-docker-wrapper
        |--things
            |--things
            |--things_app
            |--Dockerfile
            |--requirements.txt
        |--.env
        |--docker-compose.yml
    

    构建与启动

    根目录 下,执行命令

    # 构建镜像
    docker-compose build
    
    # 启动
    docker-compose up
    

    相关文章

      网友评论

          本文标题:基于docker部署django项目

          本文链接:https://www.haomeiwen.com/subject/gyewpktx.html