docker打包部署nginx,django应用

本文详细介绍了如何使用Docker部署Django应用,包括创建django项目,本地部署,以及通过uwsgi和nginx进行项目部署。重点讲述了在Docker中打包有ssh服务和python3服务的centos镜像,最后成功将容器转移到另一服务器部署。
摘要由CSDN通过智能技术生成

1、创建django项目

a)

安装django依赖包:pip3 install Django
# 使用 django-admin 来创建 HelloWorld 项目
django-admin startproject src
cd src/
执行同步数据库文件:python3 manage.py migrate
# 启动django
python3 manage.py runserver 0.0.0.0:8000

本地测试:
在浏览器中输入127.0.0.1:8000
后面将代码放到了服务器上进行测试

b) django中连接mysql数据库

DATABASES = {
   
    # 'default': {
   
    #     'ENGINE': 'django.db.backends.sqlite3',
    #     'NAME': BASE_DIR / 'db.sqlite3',
    # }
    'default': {
   
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'jlpost',
        'USER': 'root',
        'HOST': '10.30.239.206',
        'PASSWORD': '123456',
        'PORT': '3306',
    }
}

c) 安装mysql
安装mysql:参见https://www.runoob.com/mysql/mysql-install.html
安装pymsql==1.0.2作为数据库驱动,在_init_.py文件中配置,此处需要指定pymysql的版本,否则可能报错

import pymysql
pymysql.version_info = (1, 4, 13, "final", 0)
pymysql.install_as_MySQLdb()

在测试代码的时候此处遇到一个问题Forbidden (CSRF cookie not set.),参见:https://blog.csdn.net/qq_43245972/article/details/87883108

d) 运行时数据库会报错

django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).

解决方法如下:https://blog.csdn.net/weixin_43336281/article/details/100055435
https://my.oschina.net/u/4337873/blog/4279371

得到django项目目录如下:
在这里插入图片描述

2、本地部署

采用uwsgi+nginx部署项目。服务器:CentOS 7.9

2.1 uwsgi启动django

  • 安装uwsgi
pip3 install uwsgi

报错如下:
在这里插入图片描述
查阅资料发现是python3_devel(centos系统下)未安装,补充该安装包,成功

yum install python3-devel
  • 收集静态资源
    配置django目录下的settings.py
# 静态资源访问的起始url
STATIC_URL = '/static/'
# 指定静态资源所在的目录
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'hello_dist', 'dist', 'static'),
]
# 设置收集静态资源的路径(部署时使用)
STATIC_ROOT = os.path.join(BASE_DIR, 'hello_dist', 'dist')

收集静态资源

python3 manage.py collectstatic
<
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值