nginx.conf
worker_processes auto;
events {
worker_connections 1024; # 最大连接数
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
proxy_connect_timeout 3600s; # 连接超时时间
proxy_send_timeout 3600s; # 发送数据超时时间
proxy_read_timeout 3600s; # 读取响应超时时间
# gzip on; # 开启Gzip压缩
# gzip_disable "msie6";
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
# 主服务器块
server {
listen 8000;
# server_name example.com; # 替换为你的域名
# 根URL请求的代理设置
location / {
proxy_pass http://django_backend; # Django应用服务的地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 静态文件缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, max-age=2592000";
}
# SSL/TLS配置(需要配置SSL证书和密钥)
# listen 443 ssl;
# ssl_certificate /path/to/ssl/certificate.crt;
# ssl_certificate_key /path/to/ssl/private.key;
# ssl_protocols TLSv1.2 TLSv1.3;
# ssl_prefer_server_ciphers on;
# ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
}
# 后端Django应用服务的负载均衡配置
upstream django_backend {
server django-1:8000;
server django-2:8000;
server django-3:8000;
}
}
docker-compose.yml
version: '3'
services:
django-1:
build: .
ports:
- "8001:8000"
django-2:
build: .
ports:
- "8002:8000"
django-3:
build: .
ports:
- "8003:8000"
nginx:
image: nginx:latest
ports:
- "8081:8000"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- django-1
- django-2
- django-3
Dockerfile
# 使用一个官方的Python镜像作为基础镜像
FROM python:3.8.9
# 设置环境变量
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# 在容器中创建一个工作目录
WORKDIR /Users/App/skr_qa_tools
# 安装依赖
COPY requirements.txt /Users/App/skr_qa_tools
RUN pip install --no-cache-dir -r requirements.txt
# 将当前目录的内容复制到容器中的/app/目录下
COPY . /Users/App/skr_qa_tools
# 暴露uWSGI将要监听的端口
EXPOSE 8000
# 启动uWSGI服务器
CMD ["uwsgi", "--ini", "uwsgi.ini"]