开发个人Go-ChatGPT--5 模型管理 (三)

开发个人Go-ChatGPT--5 模型管理 (三)

服务部署

go-ChatGPT项目涉及的中间件服务较多,以下部署文件目录:

bash 复制代码
|-- chat-api
|   |-- etc
|   |   `-- config.yaml
|   `-- logs
|-- chat-rpc
|   |-- etc
|   |   `-- config.yaml
|   `-- logs
|-- docker-compose.yaml
|-- mysql
|   `-- data
|-- nginx
|   |-- conf
|   |   `-- conf.d
|   `-- data
|       `-- front
|-- ollama
|   |-- history
|   |-- id_ed25519
|   `-- id_ed25519.pub
|-- redis
|   `-- data
|       `-- dump.rdb
|-- user-api
|   |-- etc
|   |   `-- config.yaml
|   `-- logs
`-- user-rpc
    |-- etc
    |   `-- config.yaml
    `-- logs

docker-compose.yaml

yaml 复制代码
version: '3.8'

services:
  user-rpc:
    image: eilinge/open-ui-user-rpc
    container_name: user-rpc
    ports:
      - "9001:9001"
    volumes:
      - ./user-rpc/etc/config.yaml:/app/etc/config.yaml
      - ./user-rpc/logs:/app/logs
    networks:
      - default
    depends_on:
      - mysql
      - redis
      - etcd

  user-api:
    image: eilinge/open-ui-user-api
    container_name: user-api
    ports:
      - "8081:8081"
    volumes:
      - ./user-api/etc/config.yaml:/app/etc/config.yaml
      - ./user-api/logs:/app/logs
    networks:
      - default
    depends_on:
      - mysql
      - redis
      - etcd

  chat-rpc:
    image: eilinge/open-ui-chat-rpc
    container_name: chat-rpc
    ports:
      - "9002:9002"
    volumes:
      - ./chat-rpc/etc/config.yaml:/app/etc/config.yaml
      - ./chat-rpc/logs:/app/logs
    networks:
      - default
    depends_on:
      - mysql
      - redis
      - etcd

  chat-api:
    image: eilinge/open-ui-chat-api
    container_name: chat-api
    ports:
      - "8082:8082"
    volumes:
      - ./chat-api/etc/config.yaml:/app/etc/config.yaml
      - ./chat-api/logs:/app/logs
    networks:
      - default
    depends_on:
      - mysql
      - redis
      - etcd

  redis: # 服务名称
    image: redis:7.2.4 # redis镜像版本
    container_name: openui-redis # 容器名称
    volumes:
      - ./redis/data:/data # 映射数据目录,宿主机:容器
    restart: always # 容器开机自启
    ports:
      - 6379:6379
    privileged: true # 获取宿主机root权限
    networks:
      - default

  mysql: # 服务名称
    image: mysql:8.2.0 # redis镜像版本
    container_name: openui-mysql # 容器名称
    environment:
      - MYSQL_ROOT_PASSWORD=123456
    volumes:
      - ./mysql/data:/data # 映射数据目录,宿主机:容器
    restart: always # 容器开机自启
    ports:
      - 3306:3306
    privileged: true # 获取宿主机root权限
    networks:
      - default

  etcd:
    image: "bitnami/etcd:latest"  # 使用bitnami的etcd镜像
    container_name: openui-etcd
    environment:
      - ALLOW_NONE_AUTHENTICATION=yes  # 允许无认证访问
      - ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379  # 客户端访问地址
      - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
    ports:
      - 2379:2379
      - 2380:2380
    networks:
      - default

  etcdkeeper:
    container_name: openui-etcdkeeper
    image: evildecay/etcdkeeper:v0.7.6
    ports:
      - "8099:8080"
    networks:
      - default

  nginx:
    image: nginx:latest
    container_name: openui-nginx
    ports:
      - "8080:80"
      - "8443:443"
    volumes:
      - ./nginx/conf/conf.d:/etc/nginx/conf.d
      - ./nginx/logs:/var/log/nginx
      - ./nginx/data/front:/data/front
      - /etc/nginx/ssl:/etc/nginx/ssl 
    networks:
      - default

  ollama:
    volumes:
      - ./ollama:/root/.ollama
    container_name: ollama
    tty: true
    restart: unless-stopped
    image: ollama/ollama
    environment:
      - name=value
    ports:
      - 11434:11434
    networks:
      - default
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]

networks:
  default:
    external: true
    name: openui-net

Nginx 配置

经过前面几章的学习,相信一步一步走过来的同学会发现,user-apichat-api是2个独立的服务,各自启动在不同端口上,router也不一致,open-webUI如何实现调用一个统一的服务入口,就可以分别调用多个不同服务呢?

json 复制代码
server {
    listen       80;
    listen       443 ssl; 
    server_name  _;

    ssl_certificate     /etc/nginx/ssl/server.pem;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    location /static/ {
        root /data/front;
    }
 
    location / {
        proxy_pass http://chat-api:8082;
        proxy_set_header X-Forwarded-Proto  $scheme; 
    }

    location /api/v1/auths {
        proxy_pass http://user-api:8081;
        proxy_set_header X-Forwarded-Proto  $scheme;
    }
}

答案就在 nginx的配置文件defalut.conf中,user服务的router会走/api/v1/auths,chat相关服务则会走/

项目目录

jackwillsmith/go-chatgpt-env: go chatgpt env deploy (github.com)

jackwillsmith/openui-backend-go: openui-backend-go (github.com)

jackwillsmith/openui-svelte-build (github.com)

相关推荐
2601_966949657 小时前
为什么量化策略需要大量历史股票数据?从回测可信度理解数据规模
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
niucloud-admin7 小时前
JAVA V6 多商户商城 开发文档——插件目录结构
java·开发语言
滕州市燕猫虎计算机科技工作室个体工商户7 小时前
Java锁
java·开发语言
多加点辣也没关系8 小时前
JavaScript|第31章:表单与控件
开发语言·javascript·ecmascript
菜鸟~noob2338 小时前
【电子战】 第09篇:阵列信号处理——波束形成、MVDR、MUSIC【含matlab代码】
开发语言·matlab·信号处理
ocean21038 小时前
2025-2026年Python面试高频知识点洞察
开发语言·python·面试·python八股文
零依赖极客8 小时前
Day 6·1 ARMv8.2 dotprod——vdotq_s32 一条指令做 4 个点积
c语言·开发语言·人工智能·矩阵·arm·vllm
新时代牛马10 小时前
cyclictest 毛刺从哪来?从ftrace、latencytop、perf到IRQ/调度延迟定位
android·开发语言·python·kotlin
三84410 小时前
Java 模板注入(FreeMarker) · 02 · 模板引擎与 FreeMarker 语法
java·开发语言·web安全·freemarker