当前位置: 首页 > 工具软件 > docker-django > 使用案例 >

Docker&Nginx&uwsgi部署Django&Vue记录

邢寒
2023-12-01

后端

uwsgi.ini

[uwsgi]
socket=0.0.0.0:6061
# 为所有的socket操作设置内部超时时间(默认4秒)。这个配置会结束那些处于不活动状态超过4秒的连接
socket-timeout=4
listen=2048
processes=4
threads = 2
enable-threads=true
master=true
pidfile=/var/log/jojo/uwsgi.pid
daemonize=/var/log/jojo/uwsgi.log
wsgi-file=/opt/jojo/yingzheng/wsgi.py
pythonpath=/opt/jojo
profiler=true
# enable memory usage report. This will print in the request 1_testid_log information about RSS and address space usage.
memory-report=true
logdate=ture
buffer-size=65535
limit-as=6048
reload-on-as=6048
reload-on-rss=2048

nginx.conf


user root;
worker_processes auto;
pid /run/nginx.pid;

#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
error_log /var/log/jojo/nginx_error.log;

events {
	worker_connections 2048;
}

http {

	include /etc/nginx/mime.types;
	default_type application/octet-stream;
	access_log /var/log/jojo/nginx_access.log ;

	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 30;
	types_hash_max_size 2048;


    proxy_http_version 1.1;
    proxy_set_header Connection "";

    fastcgi_buffer_size 128k;
    fastcgi_buffers 8 128k;
	
	client_max_body_size 1000M;
	client_body_buffer_size 10m;
	client_header_buffer_size 32k;

	##
	# SSL Settings
	##
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;


  server {
      listen       80;
      server_name  localhost;
      charset utf-8;

      proxy_connect_timeout 600;
      proxy_read_timeout 600;
      proxy_send_timeout 600;
      proxy_buffer_size 32k;
      proxy_buffers 4 32k;
      proxy_busy_buffers_size 64k;

      location / {
          include uwsgi_params;
          uwsgi_pass 127.0.0.1:6061;
          uwsgi_connect_timeout 600;
          uwsgi_read_timeout 600;
          uwsgi_send_timeout 600;
      }
      location /NginxStatus {
        stub_status on;
        access_log on;
        auth_basic "NginxStatus";
        # auth_basic_user_file confpasswd;
      }
 }
  server {
      listen       8081;
      server_name  localhost;
      charset utf-8;

      proxy_connect_timeout 600;
      proxy_read_timeout 600;
      proxy_send_timeout 600;
      proxy_buffer_size 32k;
      proxy_buffers 4 32k;
      proxy_busy_buffers_size 64k;

      location /jmeterreport/ {
          root /opt/jojo/static/;
          autoindex on;
          autoindex_exact_size off;
          autoindex_localtime on;
      }
      location /NginxStatus {
        stub_status on;
        access_log on;
        auth_basic "NginxStatus";
        # auth_basic_user_file confpasswd;
      }
  }
}



Dockerfile

FROM jojo-basev2:v1.0.2

RUN mkdir -p /var/log/jojo
RUN mkdir -p /opt/jojo
# 下载代码 & 安装依赖
COPY ./requirements /opt/jojo/requirements
RUN python3 -m pip install --upgrade pip -i http://mirrors.cloud.tencent.com/pypi/simple --trusted-host=mirrors.cloud.tencent.com
RUN pip3 install -r /opt/jojo/requirements/prod.txt -i http://mirrors.cloud.tencent.com/pypi/simple --trusted-host=mirrors.cloud.tencent.com --default-timeout=1000

WORKDIR /opt/jojo
COPY . .
RUN mkdir -p /opt/jojo/logs

# uwsgi配置文件
ADD uwsgi.ini /opt/jojo/uwsgi.ini
## nginx配置文件
ADD nginx.conf /etc/nginx/nginx.conf

docker-compose.yml

version: '3'
services:
  jojo-api:
    hostname: jojo-api
    build:
      context: .
      dockerfile: Dockerfile.api
    image: jojo-api:${VERSION:-latest}
    container_name: jojo-api
    shm_size: 3g
    ports:
      - 6060:80
      - 6066:8081
    environment:
      - PYTHONIOENCODING=utf-8
    volumes:
    - /var/log/jojo:/var/log/jojo
    - /opt/jojo/static:/opt/jojo/static
    command:
      - /bin/sh
      - -c
      - |
        source /etc/profile
        export LC_ALL="en_US.utf8"
        uwsgi /opt/jojo/uwsgi.ini
        nginx -c /etc/nginx/nginx.conf -g "daemon off;"
    privileged: true
    sysctls:
      net.core.somaxconn: 2048

前端

Dockerfile

FROM nginx

RUN rm /etc/nginx/nginx.conf

RUN mkdir /nfs_share
RUN mkdir -p /var/log/nginx

ADD nginx.conf /etc/nginx/nginx.conf

COPY dist/ /usr/share/nginx/html/

nginx.conf

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
# pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
# include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    # include /etc/nginx/conf.d/*.conf;
    server {
        listen       80;
        server_name  yingzheng;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        location / {
          root   /usr/share/nginx/html;
          index  index.html index.htm;
          try_files $uri $uri/ /index.html;
        }

        #location ^~ /apis/ {
        #        proxy_pass http://127.0.0.1:5000/apis/;
        #}

    }
}

 类似资料: