Code前端首页关于Code前端联系我们

Docker 部署 Django 项目

terry 2年前 (2023-09-28) 阅读数 158 #未命名

Docker部署Django项目

1。 Docker 和 Django

为什么使用 Docker 部署 Django 项目?这是因为 Docker 提供了一个独立、一致的环境,允许开发人员在任何地方运行他们的应用程序,而不必担心环境配置问题。这就像拥有所有工具和材料的宝库,因此您可以随时随地开始工作。

好了,话不多说,让我们开始吧!

1.1 安装Docker

首先安装Docker。在终端中输入以下命令:

sudo apt-get update
sudo apt-get install docker-ce

然后使用此命令验证 Docker 是否已成功安装:

docker --version

如果看到 Docker 版本号,则表示安装成功!请给自己一个掌声。 ?

1.2 创建Django项目

接下来我们需要创建一个新的Django项目。在终端中输入以下命令:

django-admin startproject myproject

然后进入项目目录:

cd myproject

这就是您的 Django 项目的创建方式。

2。 Docker 您的 Django 项目

下一步是将您的 Django 项目放入 Docker 中。

2.1 创建 Dockerfile

首先您需要创建一个 Dockerfile。在项目的根目录中创建一个名为 Dockerfile 的新文件。在这个文件中,我们将记录如何在 Docker 中创建一个可以运行 Django 项目的环境。

# Dockerfile
FROM python:3.9
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

2.2 创建 docker-compose.yml 文件

然后你需要一个 docker-compose.yml 文件。该文件告诉 Docker 如何运行您的项目。

# docker-compose.yml
version: "3.8"
services:
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - 8000:8000

2.3 构建并运行 Docker 容器

最后,使用以下命令构建并运行 Docker 容器:

docker-compose up

如果一切顺利,您现在应该可以访问 http://localhost :8000可以查看您的Django项目。

3。 Nginx

Nginx是一个高性能的HTTP和反向代理服务器,可以帮助我们将Docker中运行的Django项目暴露到外部网络。这样就可以在互联网上访问我们的Django项目了。

3.1 将 Nginx 安装到 Docker 容器中

首先,我们需要将 Nginx 安装到 Docker 容器中。我们可以在 Dockerfile 中添加以下命令:

# Dockerfile
FROM python:3.9
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
RUN apt-get update && apt-get install -y nginx

3.2 配置 Nginx

然后我们需要配置 Nginx。我们可以在项目的根目录中创建一个名为 nginx.conf 的新文件。在这个文件中,我们将记录如何配置 Nginx。

# nginx.conf
server {
    listen 80;
    server_name localhost;
    location / {
        proxy_pass http://web:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

3.3 将 Nginx 配置文件添加到 Dockerfile

接下来,我们需要将 Nginx 配置文件添加到 Dockerfile。

# Dockerfile
FROM python:3.9
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
RUN apt-get update && apt-get install -y nginx
COPY nginx.conf /etc/nginx/sites-enabled/
RUN service nginx start

4。 MySQL

MySQL是一个关系数据库管理系统,可以帮助我们存储和管理我们的Django项目的数据。

4.1 安装MySQL

首先,我们需要将MySQL安装到Docker容器中。我们可以在 Dockerfile 中添加以下命令:

# Dockerfile
FROM python:3.9
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
RUN apt-get update && apt-get install -y nginx mysql-server
COPY nginx.conf /etc/nginx/sites-enabled/
RUN service nginx start

4.2 MySQL 配置

可以在项目根目录下新建一个文件,名为 my.cnf。在这个文件中我们记录了如何配置MySQL。

# my.cnf
[mysqld]
bind-address = 0.0.0.0

4.3 将MySQL配置文件添加到Dockerfile中

接下来,您需要将MySQL配置文件添加到Dockerfile中。

# Dockerfile
FROM python:3.9
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
RUN apt-get update && apt-get install -y nginx mysql-server
COPY nginx.conf /etc/nginx/sites-enabled/
COPY my.cnf /etc/mysql/my.cnf
RUN service nginx start
RUN service mysql start

5。技术总结

现在您的Django项目正在独立、一致的环境中运行,并且可以通过Nginx在互联网上访问。

这些技术的背后,还有更深更广的知识等待着你去探索。例如,您可以尝试使用 Docker Swarm 或 Kubernetes 来管理您的 Docker 容器,或者使用 Gunicorn 或 uWSGI 来提高 Django 项目的性能。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门