宝塔面板+docker部署django项目

本文原理是,使用docker生成django+uwsgi容器,利用宝塔面板的nginx反向代理容器。

进入django项目目录,新建Dockfile, uwsgi.ini和start.sh三个文件。

Dockfile

# 基础镜像:python3.7环境
FROM python:3.7

# 镜像作者
MAINTAINER Richard

# 设置 python 环境变量
ENV PYTHONUNBUFFERED 1

# 设置pypi源头为国内源
#  COPY pip.conf /root/.pip/pip.conf

# 在容器内/var/www/html/下创建webapp文件夹
RUN mkdir -p /var/www/html/webapp

# 设置容器内工作目录
WORKDIR /var/www/html/webapp

# 将当前目录文件拷贝一份到工作目录中(. 表示当前目录)
# ADD . /var/www/html/webapp

ADD requirements.txt /var/www/html/webapp
ADD start.sh /var/www/html/webapp

# 利用 pip 安装依赖
RUN pip install -r requirements.txt

# Windows环境下编写的start.sh每行命令结尾有多余的\r字符,需移除。
RUN sed -i 's/\r//' ./start.sh

# 设置start.sh文件可执行权限
RUN chmod +x ./start.sh

uwsgi.ini

[uwsgi]
project=webapp
subproject=djangoProject1 #项目名称(需要修改的地方)
base=/var/www/html

chdir=%(base)/%(project)
module=%(subproject).wsgi:application
master=True
processes=2

socket=0.0.0.0:8080 #这里直接使用uwsgi做web服务器,使用http。如果使用nginx,需要使用socket沟通。
buffer-size=65536

pidfile=/tmp/%(project)-master.pid
vacuum=True
max-requests=5000
daemonize=/tmp/%(project)-uwsgi.log

#设置一个请求的超时时间(秒),如果一个请求超过了这个时间,则请求被丢弃
harakiri=60
#当一个请求被harakiri杀掉会,会输出一条日志
harakiri-verbose=true

start.sh

#!/bin/bash
python manage.py collectstatic --noinput&&
python manage.py makemigrations&&
python manage.py migrate&&
uwsgi --ini /var/www/html/webapp/uwsgi.ini

修改settings.py

import os
ALLOWED_HOSTS = ["*"]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

生成镜像

docker build -t mydjango_img:0.1 .

生成容器

docker run -it --name webapp -p 8080:8080 -v /www/wwwroot/projects/djangoProject1:/var/www/html/webapp -d mydjango_img:0.1

# /www/wwwroot/projects/djangoProject1 宿主机项目目录
# /var/www/html/webapp 容器工作目录

进入容器,启动uwsgi

docker exec -it webapp3 /bin/bash start.sh

宝塔面板设置反向代理

#PROXY-START/
    location / {
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:8000;  #端口要和uwsgi里配置的一样
}
location /static/ {
    alias /www/wwwroot/projects/djangoProject1/static/; #静态资源路径
    }

#PROXY-END/

参考:https://blog.csdn.net/weixin_42134789/article/details/106205182

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权,转载请注明出处。
文章名称:《宝塔面板+docker部署django项目》
文章来自:泰恩数据
文章链接:https://tyne.cc/799.html
本站资源仅供个人学习使用,请勿用于商业用途。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址