Django Docker的部署方法

1. 背景

Django 程序如何部署有各种方法,我们今天使用Docker来部署

2. Docker打包

  • 将Django文件都移动到 src 子目录

  • 编写 Dockerfile 文件,输入以下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    FROM python:slim
    RUN python -m venv /venv
    ENV PAth='/venv/bin;4path'

    COPY requirements.txt requirements.txt
    RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

    COPY src /src
    WORKDIR /src
    CMD python manage.py migrate --noinput
    CMD python manage.py runserver 0.0.0.0:8888
  • 编写 requirement.txt 文件,输入以下内容:

    1
    django==4.2.7
  • 打包docker文件:

    1
    sudo docker build -t superlists .

    superlists 为docker名

  • 用前台方式运行docker:

    1
    sudo docker run -p 8888:8888 --mount type=bind,source=./src/db.sqlite3,target=/src/db.sqlite3 -it superlists

3. 安装guicorn

  • 添加 guicorn 到requirement.txt 文件:

    1
    2
    django==4.2.7
    gunicorn==21.2.0
  • 修改 Dockerfile 文件,替换最后一条语句:

    1
    CMD gunicorn --bind :8888 superlists.wsgi:application
  • 打包docker文件:

    1
    sudo docker build -t superlists .
  • 用前台方式运行docker:

    1
    sudo docker run -p 8888:8888 --mount type=bind,source=./src/db.sqlite3,target=/src/db.sqlite3 -it superlists

发现静态文件css没有加载,继续。

4. 安装Whitenoise

  • 继续修改requirement.txt :

    1
    2
    3
    django==4.2.7
    gunicorn==21.2.0
    whitenoise==6.6.0
  • 修改 src/superlists/settings.py,添加这个中间件:

    1
    2
    3
    4
    5
    MIDDLEWARE = [
    "django.middleware.security.SecurityMiddleware",
    "whitenoise.middleware.WhiteNoiseMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    [...]
  • 打包docker文件:

    1
    sudo docker build -t superlists .

    superlists 为docker名

  • 用前台方式运行docker:

    1
    sudo docker run -p 8888:8888 --mount type=bind,source=./src/db.sqlite3,target=/src/db.sqlite3 -it superlists

成功加载。

请我喝杯咖啡吧~

支付宝
微信