返回顶部

Django 文件上传项目部署

Django 文件上传项目部署

相关文件准备

Dockerfile

Django项目的主要文件是manage.py,并且你的依赖包列表在一个名为requirements.txt的文件中,根据你的实际项目结构和需求。

# 使用一个基础镜像
#最小版镜像通常只包含了Python解释器和一些基本的系统工具
FROM python:3.8.10-slim-buster
# 设置工作目录
WORKDIR /app

# 复制项目文件到镜像中
COPY . /app

# 安装项目依赖
RUN pip install -r requirements.txt
RUN rm -f /app/requirements.txt

# 运行数据库迁移
RUN python manage.py migrate

# 暴露Django运行的端口号
EXPOSE 8000

# 启动Django应用
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

 

.dockerignore

忽略项目中的一些文件优化镜像大小

Dockerfile*
.dockerignore
.git
.gitignore
.env
*/bin
*/obj
README.md
LICENSE
.vscode

 

requirements.txt

requirements.txt文件中,你可以定义你的项目所需的常用包及其版本。

在使用pip安装依赖时,可以使用以下命令:pip install -r requirements.txt

paramiko==2.7.2
requests==2.25.1
django==4.2.1
six==1.16.0

 

查看Django的版本

要查看Django的版本,你可以在项目的Python环境中执行以下命令:

import django
print(django.get_version())

 

这将会导入Django模块并打印出当前安装的Django版本号。

另外,你也可以在命令行中使用django-admin命令来查看Django的版本。打开命令行终端,并执行以下命令:

django-admin --version

 

 

项目代码

注意: 相关的秘钥和日志路径需要修改为: /app/app.log和/app/sleepy_bear.pem

 本次使用前面几章节编写的文件上传显示修改的Django项目,也可以使用其他自己的项目,曲意相通适当修改即可。

 

打包镜像

 docker build -t django-upload-service:v4 .

运行镜像

 
 
#运行测试
docker run -p 8000:8000 -v /data/app.log:/app/app.log django-upload-service:v4 --name file-upload-service
 

访问测试

 

 

配置域名及证书

server {
    listen 443 ssl;
    server_name unit-upload.xxxx.com;

    ssl_certificate  conf.d/xxx__xxxxx.com.pem;
    ssl_certificate_key conf.d/xxx__xxxx.com.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://172.31.0.12:8000;
    }
}



server {
    listen 80;
    server_name unit-upload.xxx.com;
    return 301 https://$host$request_uri;
}


### 访问
https://unit-upload.xxx.com/upload/
#模版配置csrf_token
  <form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" name="file">
    <button type="submit">上传</button>
  </form>
  <a href="{% url 'file_list' %}">查看文件列表</a>

#配置文件去掉中间件csrf,注释# 'django.middleware.csrf.CsrfViewMiddleware',
#file_upload/file_upload/settings.py
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'file_upload_app.middleware.StatusCodeMiddleware',
]

 

 

 

 

 

 

 

posted @ 2023-08-18 13:47  九尾cat  阅读(65)  评论(0编辑  收藏  举报