From c8a02bc4950f908de92014355866250d1b12f239 Mon Sep 17 00:00:00 2001 From: gwind Date: Sat, 30 Dec 2023 22:12:46 +0800 Subject: [PATCH] update product deploy example for openai --- deploy/openai/production/README.md | 23 ++++++++ deploy/openai/production/docker-compose.yml | 63 +++++++++++++++++++++ deploy/openai/production/ga.yml | 23 ++++++++ middlewares/openai/README.md | 3 +- 4 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 deploy/openai/production/README.md create mode 100644 deploy/openai/production/docker-compose.yml create mode 100644 deploy/openai/production/ga.yml diff --git a/deploy/openai/production/README.md b/deploy/openai/production/README.md new file mode 100644 index 0000000..a37125f --- /dev/null +++ b/deploy/openai/production/README.md @@ -0,0 +1,23 @@ +# 部署生产环境 + +进入 `deploy/openai/production` 目录 + +1. 查看 docker-compose.yml 文件,修改配置 +2. 查看 ga.yml 文件,修改配置 +3. 启动服务 + +```bash +docker compose up -d +``` + +## FAQ + +### 配置 key + +```bash +export OPENAI_API_KEY=cs-yyy +# 设置 key +docker compose exec etcd etcdctl put $OPENAI_API_KEY '{"token":"sk-xxx", "count":0}' +# 获取 key 配置 +docker compose exec etcd etcdctl get $OPENAI_API_KEY +``` diff --git a/deploy/openai/production/docker-compose.yml b/deploy/openai/production/docker-compose.yml new file mode 100644 index 0000000..42a1cee --- /dev/null +++ b/deploy/openai/production/docker-compose.yml @@ -0,0 +1,63 @@ +version: '3.1' + +services: + + traefik: + image: traefik:v2.10 + container_name: traefik + ports: + - "443:443" + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - ./letsencrypt:/letsencrypt + command: + # - --log.level=DEBUG + - --providers.docker + - --providers.docker.exposedByDefault=false + - --entrypoints.websecure.address=:443 + - --certificatesresolvers.myresolver.acme.tlschallenge + - --certificatesresolvers.myresolver.acme.email=YOUR_EMAIL + - --certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json + + openai: + image: ooclab/ga:v0.9.15 + labels: + - traefik.enable=true + - traefik.http.routers.ga-service.rule=Host(`YOUR_DOMAIN_NAME`) + - traefik.http.routers.ga-service.entrypoints=websecure + - traefik.http.routers.ga-service.tls.certresolver=myresolver + - traefik.http.services.ga-service.loadbalancer.server.port=2999 + volumes: + - "$PWD/ga.yml:/etc/ga/config.yml" + # environment: + # - GA_DEBUG=true + expose: + - "2999" + # ports: + # - "2999:2999" + # restart: unless-stopped + depends_on: + - etcd + + etcd: + image: quay.io/coreos/etcd:v3.5.11 + # image: quay.mirrors.ustc.edu.cn/coreos/etcd:v3.5.11 + container_name: etcd + environment: + - ETCD_NAME=etcd + - ETCD_DATA_DIR=/etcd-data + - ETCD_ADVERTISE_CLIENT_URLS=http://your-host-ip:2379 + - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 + - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://your-host-ip:2380 + - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 + - ETCD_INITIAL_CLUSTER=etcd=http://your-host-ip:2380 + - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster-1 + - ETCD_INITIAL_CLUSTER_STATE=new + expose: + - "2379" + - "2380" + #ports: + # - "127.0.0.1:2379:2379" + # - "127.0.0.1:2380:2380" + volumes: + - ./etcd-data:/etcd-data diff --git a/deploy/openai/production/ga.yml b/deploy/openai/production/ga.yml new file mode 100644 index 0000000..f0b77d2 --- /dev/null +++ b/deploy/openai/production/ga.yml @@ -0,0 +1,23 @@ +version: "2" + +# start the forward server +listen: ":2999" + +services: + + httpbin: + path_prefix: /httpbin + backend: https://httpbin.org + middlewares: + - name: logger + - name: debug + + openai: + path_prefix: /v1 + backend: https://api.openai.com/v1 + middlewares: + - name: logger + - name: debug + - name: openai + etcd_addr: http://etcd:2379 + # limit_day: 100 diff --git a/middlewares/openai/README.md b/middlewares/openai/README.md index 321e03c..336b01e 100644 --- a/middlewares/openai/README.md +++ b/middlewares/openai/README.md @@ -12,7 +12,8 @@ btw, ga 是透明网关,因此 openai api 自身的限制配额和用户账户 ## 使用 -[配置 openai middle 示例](../../deploy/openai/README.md) +- [配置 openai middle 示例](../../deploy/openai/README.md) +- [生厂环境部署示例](../../deploy/openai/production/README.md) ## TODO