如何在Docker上的Nginx和Gunicorn上运行多个Django项目(两个不同端口的不同Django服务器)

m4pnthwp  于 2023-08-03  发布在  Nginx
关注(0)|答案(1)|浏览(152)
need to docker nginx configuration
this is how basic nginx setup works for a single service

字符串
nginx ├── Dockerfile ├ ── nginx.conf Dockerfile:

FROM nginx:1.21-alpine

RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d

nginx.conf:

upstream hello_django {
    server web:8000;
}

server {

    listen 80;

    location / {
        proxy_pass http://hello_django;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

}


然后,在docker-compose.prod.yml中更新Web服务,将ports替换为expose:

  • 然后更新web服务,在docker-compose中 *
web:
      build:
        context: ./app
        dockerfile: Dockerfile.prod
      command: gunicorn hello_django.wsgi:application --bind 0.0.0.0:8000
      expose:
        - 8000
      env_file:
        - ./.env.prod
      depends_on:
        - db

nwlls2ji

nwlls2ji1#

要在Docker上使用Nginx和Gunicorn运行多个Django项目,您可以按照以下步骤操作:

  • 为每个Django项目创建Dockerfiles:
  • 为每个项目创建单独的目录。
  • 在每个项目目录中,创建一个Dockerfile,其中包含构建Django应用程序映像所需的说明。包括安装依赖项、将项目代码复制到映像中以及指定运行Gunicorn服务器的命令。
  • 下面是一个Django项目的Dockerfile示例:
FROM python:3.9

WORKDIR /app

COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .

EXPOSE 8000

CMD ["gunicorn", "--bind", "0.0.0.0:8000", "your_project_name.wsgi:application"]

字符串

  • 创建Docker Compose文件:
  • 在主项目目录中,创建一个docker-compose.yml文件来定义每个Django项目的服务。
  • 下面是一个Docker Compose文件的例子,用于在不同的端口上运行两个Django项目:
version: "3.9"
services:
  project1:
    build:
      context: ./project1
    ports:
      - "8000:8000"
    # Add any additional configuration for project1

  project2:
    build:
      context: ./project2
    ports:
      - "8001:8000"
    # Add any additional configuration for project2

  nginx:
    build:
      context: ./nginx
    ports:
      - "80:80"
    depends_on:
      - project1
      - project2

  • 设置Nginx配置:
  • 在主项目目录中创建一个nginx目录。
  • nginx目录中,创建一个Nginx配置文件,例如nginx.conf,以定义反向代理配置,用于将请求路由到相应的Django项目。
  • 下面是一个Nginx配置文件的例子:
http {
  server {
    listen 80;

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

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

  • 构建并运行Docker容器:
  • 在终端中,导航到主项目目录。
  • 运行以下命令构建并启动Docker容器:
docker-compose up --build

通过遵循这些步骤,您可以在单独的Docker容器中使用Nginx和Gunicorn运行多个Django项目,每个项目监听不同的端口。Nginx反向代理配置根据指定位置将请求路由到相应的项目。
请记住根据您的项目名称、路径和特定要求自定义配置。
注意:确保本地计算机上的其他进程没有使用必要的端口(例如,80、8000、8001)。

相关问题