开发个人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)

相关推荐
2401_8574396920 分钟前
SSM 架构下 Vue 电脑测评系统:为电脑性能评估赋能
开发语言·php
SoraLuna1 小时前
「Mac畅玩鸿蒙与硬件47」UI互动应用篇24 - 虚拟音乐控制台
开发语言·macos·ui·华为·harmonyos
xlsw_1 小时前
java全栈day20--Web后端实战(Mybatis基础2)
java·开发语言·mybatis
Dream_Snowar2 小时前
速通Python 第三节
开发语言·python
hunteritself2 小时前
AI Weekly『12月16-22日』:OpenAI公布o3,谷歌发布首个推理模型,GitHub Copilot免费版上线!
人工智能·gpt·chatgpt·github·openai·copilot
高山我梦口香糖3 小时前
[react]searchParams转普通对象
开发语言·前端·javascript
信号处理学渣3 小时前
matlab画图,选择性显示legend标签
开发语言·matlab
红龙创客3 小时前
某狐畅游24校招-C++开发岗笔试(单选题)
开发语言·c++
jasmine s3 小时前
Pandas
开发语言·python
biomooc4 小时前
R 语言 | 绘图的文字格式(绘制上标、下标、斜体、文字标注等)
开发语言·r语言