
1. Dockerfile:FROM nginx:1.25.4MAINTAINER bc lCOPY ./dist /usr/share/nginx/htmlCOPY ./nginx.conf /etc/nginx/nginx.conf# 设置容器启动时运行NginxCMD [nginx, -g, daemon off;]2. nginx.confworker_processes auto; worker_rlimit_nofile 65535; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { multi_accept on; worker_connections 65535; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; # 限制body大小 client_max_body_size 500m; 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; server { listen 80; server_name localhost; # 开启gzip压缩 gzip on; gzip_disable msie6; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain application/x-javascript application/javascript application/json text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png image/svgxml application/octet-stream; # 限制外网访问内网 actuator 相关路径 location ~ ^(/[^/]*)?/actuator(/.*)?$ { return 403; } location / { root /usr/share/nginx/html; # docker映射路径 不允许更改 try_files $uri $uri/ /index.html; index index.html index.htm; } location /api/ { proxy_pass http://Your ip:8080/api/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; 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; # Increase timeout for long-running API calls proxy_connect_timeout 300s; proxy_send_timeout 300s; proxy_read_timeout 300s; } location /health { return 200 OK\n; add_header Content-Type text/plain; access_log off; } error_page 500 502 503 504 /50x.html; location /50x.html { root html; } } }3. 更新脚本#!/bin/bash # 容器名称 # 子应用名 quant-web CONTAINER_NAMEquant-web FULL_IMAGE_NAMEquant-web:1.0.0 # 检查容器是否存在 function check_container_exists { local container_id$(docker ps -aq --filter name$1) if [[ -n $container_id ]]; then echo 容器 $1 存在 return 0 else echo 容器 $1 不存在 return 1 fi } # 停止并删除容器 function stop_and_remove_container { local container_name$1 echo 正在停止并删除容器 $container_name... docker stop $container_name docker rm -f $container_name docker rmi -f $FULL_IMAGE_NAME } # 执行docker build function build_image { rm -rf dist unzip dist.zip echo 正在构建Docker镜像... # 假设Dockerfile在当前目录下 docker build -t $FULL_IMAGE_NAME . docker run -d -p 80:80 --networkhost --privilegedtrue --name $CONTAINER_NAME $FULL_IMAGE_NAME echo quant-web容器已启动 } # 主逻辑 if check_container_exists $CONTAINER_NAME; then stop_and_remove_container $CONTAINER_NAME build_image else build_image fi