Docker+Uwsgi部署Django项目

在之前的文章中,已经给大家分享了在docker中使用django自带的命令部署项目,这篇文章主要讲解如何使用uwsgi部署。

1. 在Django项目的根目录下新建Dockerfile文件

在这里插入图片描述

#Dockerfile文件
# 使用 Python 3.9 作为基础镜像
FROM python:3.9

# 设置工作目录
WORKDIR /app

# 复制项目文件到工作目录
COPY . /app

# 创建一个新的用户和组,例如命名为 myapp
ARG USER_ID=1000
ARG GROUP_ID=1000
RUN groupadd -g ${GROUP_ID} myapp && \
    useradd -u ${USER_ID} -g ${GROUP_ID} -d /app myapp && \
    chown ${USER_ID}:${GROUP_ID} /app
USER myapp

# 创建虚拟环境
RUN python -m venv venv

# 激活虚拟环境
ENV PATH /app/venv/bin:$PATH

# 设置清华 pip 镜像
ENV PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple 
ENV PIP_TRUSTED_HOST=pypi.tuna.tsinghua.edu.cn

# 安装项目依赖
RUN pip install --no-cache-dir -r requirements.txt

# 暴露端口 8000
EXPOSE 8000

# 设置环境变量,确保Django在生产模式下运行
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# 启动 Django 服务器
# CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

# CMD 指令运行 Django 项目的 SSL 服务器
# CMD ["python", "manage.py", "runsslserver", "0.0.0.0:443", "--certificate=/app/certificate.pem", "--key=/app
# /private.key"]

# 运行uWSGI服务
CMD ["uwsgi", "--ini", "/app/uwsgi.ini"]

2. 在Django项目的根目录下新建uwsgi.ini文件

# uwsgi.ini
[uwsgi]
master = true
# 指定 Django 项目的 WSGI 文件
module = djangoProject.wsgi:application

# 项目根目录,根据实际情况进行调整
chdir = /app

# 指定 Python 环境变量,确保使用正确的 Python 版本
home = /app/venv

# 指定 uWSGI 服务的 socket 文件位置
http = 0.0.0.0:8000

# 进程数和线程数根据需要进行调整
processes = 4
threads = 2

# 设置环境变量,确保 Django 在生产模式下运行
env = DJANGO_SETTINGS_MODULE=djangoProject.settings
vacuum = true

3. 将Django项目打包上传到服务器并cd到项目的根目录

例如:Django项目的路径在/www/wwwroot/djangoProject
则输入:

cd /www/wwwroot/djangoProject

4. 构建并运行镜像

在 /www/wwwroot/djangoProject 目录下执行:

docker build -d django-app .

docker build -t django-app . 这个命令用于构建一个 Docker 镜像,并且为这个镜像指定了一个标签(tag)叫做 django-app。这里是命令的详细解释:

  • docker build: 这是 Docker 的一个命令,用于根据 Dockerfile 中的指令构建一个新的镜像。

  • -t: 这个选项是 ---tag 的缩写,它用于指定构建的镜像的标签。

  • django-app: 这是您为构建的镜像指定的标签。标签用于标识特定的镜像,并且可以在运行容器时引用。在这个例子中,标签 django-app 将与构建的镜像关联。

  • .: 这个点表示当前目录。Docker 会在这个目录下查找名为 Dockerfile 的文件,并根据该文件中的指令构建镜像。如果您在不同的目录中,您需要指定包含 Dockerfile 的目录的路径。

所以,整个命令 docker build -t django-app . 的意思是:“在当前目录下查找 Dockerfile 并根据其中的指令构建一个新的 Docker 镜像,并将这个镜像标记为 django-app”。

构建完成后,您可以使用 docker images 命令查看所有本地镜像,并且应该能看到一个名为 django-app 的镜像。

接下来,您可以使用 docker run 命令来创建并启动一个基于 django-app 镜像的容器。例如:

docker run -d --name my-django-container -p 80:8000 --user 1000:1000 django-app

这个命令的意思是:在后台运行一个名为 my-django-container 的容器,将容器的 80 端口映射到宿主机的 8000 端口,使用用户 ID 和组 ID 为 1000 的用户运行容器,并使用之前构建的 django-app 镜像。

至此,在浏览器中输入服务器ip地址或者已解析的域名,就能看到部署成功的页面了。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员禅心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值