部署篇 - Webchat项目Docker部署

5 阅读6分钟

DockerFile编写

webchat-act 服务

# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-act.jar /app/webchat-act.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -Xss1m -XX:MaxMetaspaceSize=96m  -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8025
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-act.jar"]

容器启动命令

docker run -d \
  -p 8025:8025 \
  --memory=612m \
  --memory-swap=612m \
  -v /opt/project/webchat/webchat-act/config:/app/config \
  --name webchat-act \
  webchat-act服务镜像名称/镜像id

Jar包减压命令jar -xf ...

jar -xf /path/to/webchat-act.jar BOOT-INF/classes/bootstrap.yml

webchat-admin 服务

# jdk
FROM eclipse-temurin:17-jdk-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-admin.jar /app/webchat-admin.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -Xss1m -XX:MaxMetaspaceSize=96m  -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8010
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-admin.jar"]

容器启动命令

docker run -d \
  -p 8010:8010 \
  --memory=512m \
  --memory-swap=512m \
  -v /opt/project/webchat/webchat-admin/config:/app/config \
  --name webchat-admin \
  webchat-admin服务镜像名称/镜像id

webchat-aigc 服务

# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-aigc.jar /app/webchat-aigc.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -Xss1m -XX:MaxMetaspaceSize=96m  -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8019
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-aigc.jar"]

容器启动命令

docker run -d \
  -p 8019:8019 \
  --memory=612m \
  --memory-swap=612m \
  -v /opt/project/webchat/webchat-aigc/config:/app/config \
  --name webchat-aigc \
  webchat-aigc服务镜像名称/镜像id

webchat-api 服务

# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-api.jar /app/webchat-api.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -Xss1m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8026
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-api.jar"]

容器启动命令

docker run -d \
  -p 8026:8026 \
  --memory=512m \
  --memory-swap=512m \
  -v /opt/project/webchat/webchat-api/config:/app/config \
  --name webchat-api \
  webchat-api服务镜像名称/镜像id

webchat-client-chat 服务

# jdk
FROM eclipse-temurin:17-jdk-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-client-chat.jar /app/webchat-client-chat.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -Xss1m -XX:MaxMetaspaceSize=96m  -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8082
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-client-chat.jar"]

容器启动命令

docker run -d \
  -p 8082:8082 \
  --memory=512m \
  --memory-swap=512m \
  -v /opt/project/webchat/webchat-client-chat/config:/app/config \
  --name webchat-client-chat \
  webchat-client-chat服务镜像名称/镜像id

webchat-client-mall 服务

# jdk
FROM eclipse-temurin:17-jdk-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-client-mall.jar /app/webchat-client-mall.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -Xss1m -XX:MaxMetaspaceSize=96m  -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8083
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-client-mall.jar"]

容器启动命令

docker run -d \
  --memory=512m \
  --memory-swap=512m \
  -p 8083:8083 \
  -v /opt/project/webchat/webchat-client-mall/config:/app/config \
  --name webchat-client-mall \
  webchat-client-mall服务镜像名称/镜像id

webchat-client-payment 服务

# jdk
FROM eclipse-temurin:17-jdk-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-client-payment.jar /app/webchat-client-payment.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -Xss1m  -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8888
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-client-payment.jar"]

容器启动命令

docker run -d \
  -p 8888:8888 \
  --memory=512m \
  --memory-swap=512m \
  -v /opt/project/webchat/webchat-client-payment/config:/app/config \
  --name webchat-client-payment \
  webchat-client-payment服务镜像名称/镜像id

webchat-connect 服务

# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-connect.jar /app/webchat-connect.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -Xss1m  -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8088
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-connect.jar"]

容器启动命令

docker run -d \
    -p 8088:8088 \
    --memory=512m \
    --memory-swap=512m \
    -v /opt/project/webchat/webchat-connect/config:/app/config \
    --name webchat-connect \
webchat-connect服务镜像名称/镜像id

webchat-gateway 服务

# jdk
FROM eclipse-temurin:17-jdk-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-gateway.jar /app/webchat-gateway.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms256m -Xmx256m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8001
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-gateway.jar"]

容器启动命令

docker run -d \
-p 8001:8001 \
--memory=512m \
--memory-swap=512m \
-v /opt/project/webchat/webchat-gateway/config:/app/config \
--name webchat-gateway \
webchat-gateway服务镜像名称/镜像id

webchat-netty-gateway 服务

# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-netty-gateway.jar /app/webchat-netty-gateway.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 88
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-netty-gateway.jar"]

容器启动命令

docker run -d \
-p 88:88 \
--memory=512m \
--memory-swap=512m \
-v /opt/project/webchat/webchat-netty-gateway/config:/app/config \
--name webchat-netty-gateway \
webchat-netty-gateway服务镜像名称/镜像id

webchat-netty-server 服务

# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-netty-server.jar /app/webchat-netty-server.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 9999
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-netty-server.jar"]

容器启动命令

docker run -d \
-p 9999:9999 \
--memory=612m \
--memory-swap=612m \
-v /opt/project/webchat/webchat-netty-server/config:/app/config \
--name webchat-netty-server \
webchat-netty-server服务镜像名称/镜像id

webchat-pay 服务

# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-pay.jar /app/webchat-pay.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8014
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-pay.jar"]

容器启动命令

docker run -d \
-p 8014:8014 \
--memory=612m \
--memory-swap=612m \
-v /opt/project/webchat/webchat-pay/config:/app/config \
--name webchat-pay \
webchat-pay服务镜像名称/镜像id

webchat-pgc 服务

# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-pgc.jar /app/webchat-pgc.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8018
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-pgc.jar"]

容器启动命令

docker run -d \
--memory=612m \
--memory-swap=612m \
-p 8018:8018 \
-v /opt/project/webchat/webchat-pgc/config:/app/config \
--name webchat-pgc \
webchat-pgc服务镜像名称/镜像id

webchat-search 服务

# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY  webchat-search.jar /app/webchat-search.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8089
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-search.jar"]

容器启动命令

docker run -d \
--memory=512m \
--memory-swap=512m \
-p 8089:8089 \
-v /opt/project/webchat-search/config:/app/config \
--name webchat-search \
webchat-search服务镜像名称/镜像id

webchat-sso 服务

# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY  webchat-sso.jar /app/webchat-sso.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8079
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-sso.jar"]

容器启动命令

docker run -d \
-p 8079:8079 \
--memory=512m \
--memory-swap=512m \
-v /opt/project/webchat/webchat-sso/config:/app/config \
--name webchat-sso \
webchat-sso服务镜像名称/镜像id

webchat-ugc 服务

# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY  webchat-ugc.jar /app/webchat-ugc.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8017
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-ugc.jar"]

容器启动命令

docker run -d \
-p 8017:8017 \
--memory=712m \
--memory-swap=712m \
-v /opt/project/webchat/webchat-ugc/config:/app/config \
--name webchat-ugc \
webchat-ugc服务镜像名称/镜像id

webchat-user 服务

# jdk
FROM eclipse-temurin:17-jre-jammy
#作者信息(可选)
LABEL maintainer="nyc"
# 设置工作目录
WORKDIR /app
# 复制已打包好的 Spring Boot jar
COPY webchat-user.jar /app/webchat-user.jar
# JVM 参数优化(可根据实际服务器内存调整)
ENV JAVA_OPTS="-Xms192m -Xmx192m -Xss1m -XX:MaxMetaspaceSize=96m  -XX:+UseG1GC"
# 容器暴露端口
EXPOSE 8025
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.config.location=classpath:/,file:/app/config/ -jar /app/webchat-user.jar"]

容器启动命令

docker run -d \
    -p 8020:8020 \
    --memory=612m \
    --memory-swap=612m \
    --restart=always \
    -v /opt/project/webchat/webchat-user/config:/app/config \
    --name webchat-user \
webchat-user服务镜像名称/镜像id

容器一键启停脚本

#!/bin/bash

# ================== 基础配置 ==================

# 优先启动的核心容器
CORE_CONTAINERS=(
  webchat-gateway
  webchat-netty-gateway
  webchat-netty-server
  webchat-connect
)

# 其他容器(顺序无要求)
OTHER_CONTAINERS=(
  webchat-act
  webchat-admin
  webchat-aigc
  webchat-api
  webchat-client-chat
  webchat-client-mall
  webchat-client-payment
  webchat-pay
  webchat-pgc
  webchat-search
  webchat-sso
  webchat-ugc
  webchat-user
)

# ================== 通用方法 ==================

container_exists() {
  docker ps -a --format '{{.Names}}' | grep -w "$1" > /dev/null
}

container_running() {
  docker ps --format '{{.Names}}' | grep -w "$1" > /dev/null
}

start_container() {
  local name=$1
  if ! container_exists "$name"; then
    echo "⚠️  容器不存在,跳过:$name"
    return
  fi

  if container_running "$name"; then
    echo "✅ 已在运行:$name"
  else
    echo "▶️  启动容器:$name"
    docker start "$name"
  fi
}

stop_container() {
  local name=$1
  if container_running "$name"; then
    echo "⏹️  停止容器:$name"
    docker stop "$name"
  else
    echo "ℹ️  未运行:$name"
  fi
}

# ================== 操作逻辑 ==================

start_all() {
  echo "===== 启动核心容器 ====="
  for c in "${CORE_CONTAINERS[@]}"; do
    start_container "$c"
  done

  echo
  echo "===== 启动其他容器 ====="
  for c in "${OTHER_CONTAINERS[@]}"; do
    start_container "$c"
  done
}

stop_all() {
  echo "===== 停止所有容器 ====="
  for c in "${OTHER_CONTAINERS[@]}"; do
    stop_container "$c"
  done

  for c in "${CORE_CONTAINERS[@]}"; do
    stop_container "$c"
  done
}

status_all() {
  echo "===== 容器状态 ====="
  docker ps -a --format "table {{.Names}}\t{{.Status}}"
}

# ================== 入口 ==================

case "$1" in
  start)
    start_all
    ;;
  stop)
    stop_all
    ;;
  restart)
    stop_all
    echo
    start_all
    ;;
  status)
    status_all
    ;;
  *)
    echo "用法:$0 {start|stop|restart|status}"
    exit 1
    ;;
esac

给这个文件赋予执行权限

chmod +x webchat-docker.sh

使用方式

# 一键启动
./webchat-docker.sh start
# 一键停止
./webchat-docker.sh stop
# 一键重启
./webchat-docker.sh restart
# 查看状态
./webchat-docker.sh status

nginx配置

gateway.conf

server {
    listen 80;
    server_name webchat.com;

    # OAuth 前端
    location /webchat-oauth/ {
        proxy_pass http://192.168.216.20:5000/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # Client 前端(WebSocket)
    location /webchat-client/ {
        proxy_pass http://192.168.216.20:5001/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # Admin 前端
    location /webchat-admin/ {
        proxy_pass http://192.168.216.20:5002/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # Mall 前端(WebSocket)
    location /webchat-mall/ {
        proxy_pass http://192.168.216.20:5003/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    } 
          
    # Payment 前端
    location /webchat-payment/ {
        proxy_pass http://192.168.216.20:5004/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # sso-service
    location /sso-service/ {
        proxy_pass http://192.168.216.20:8001/sso-service/;
        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;
    }
    
    # admin-service
    location /admin-service/ {
        proxy_pass http://192.168.216.20:8001/admin-service/;
        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;
    }
    
    # 转发 /connect-service/ws/ 下的请求
    location /connect-service/ws/ {
        proxy_pass http://192.168.216.20:8001/connect-service/ws/;
    
        # 必须的 WebSocket 头设置
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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;
    }
    
    # 转发 /client-service 下的请求
    location /client-service/ {
        proxy_pass http://192.168.216.20:8001/client-service/;
        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;
    }
    
    # 转发 /client-service/ 下的请求
    location /aigc-service/event/ {
        proxy_pass http://192.168.216.20:8001/aigc-service/event/;
        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;
    }
    
    # 转发 /mall-service 下的请求
    location /mall-service/ {
        proxy_pass http://192.168.216.20:8001/mall-service/;
        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 /netty-service/ws/ {
        proxy_pass http://192.168.216.20:8001/netty-service/ws/;
    
        # 必须的 WebSocket 头设置
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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;
    }
    
    # 转发 /payment-service 下的请求
    location /payment-service/ {
        proxy_pass http://192.168.216.20:8001/payment-service/;
        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;
    }
}

webchat-front-admin.conf

server {
    listen 5002;
    server_name _;
    root /usr/share/nginx/html/webchat-front-admin;
    index index.html;
    location / {
        try_files $uri $uri/ /index.html;
    }
}

webchat-front-client.conf

server {
    listen 5001;
    server_name _;
    root /usr/share/nginx/html/webchat-front-client;
    index index.html;
    location / {
        try_files $uri $uri/ /index.html;
    }
}

webchat-front-mall.conf

server {
    listen 5003;
    server_name _;
    root /usr/share/nginx/html/webchat-front-mall;
    index index.html;
    location / {
        try_files $uri $uri/ /index.html;
    }
}

webchat-front-oauth.conf

server {
    listen 5000;
    server_name _;
    root /usr/share/nginx/html/webchat-front-oauth;
    index index.html;
    location / {
        try_files $uri $uri/ /index.html;
    }
}

webchat-front-payment.conf

server {
    listen 5004;
    server_name _;
    root /usr/share/nginx/html/webchat-front-payment;
    index index.html;
    location / {
        try_files $uri $uri/ /index.html;
    }
}

nginx容器启动启动命令

docker run -d --name nginx-prod \
  -p 80:80 \
  -p 5000:5000 \
  -p 5004:5004 \
  -p 5002:5002 \
  -p 5003:5003 \
  -p 5001:5001 \
  -p 5100:5100 \
  -p 7100:7100 \
  -p 443:443 \
  -v /opt/mountdata/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
  -v /opt/mountdata/nginx/mime.types:/etc/nginx/mime.types:ro \
  -v /opt/mountdata/nginx/conf.d:/etc/nginx/conf.d:ro \
  -v /opt/mountdata/nginx/certs:/etc/nginx/certs:ro \
  -v /opt/mountdata/nginx/html:/usr/share/nginx/html:ro \
  -v /opt/mountdata/nginx/logs:/var/log/nginx \
  nginx:1.22.0