部署oneapi

Auth:河川       Date:2024/04/14       Cat:玩物志       Word:共1894字

使用项目中默认的docker compose文件,没能成功部署,提示架构不同,于是通过本地构建镜像方式重新部署成功。记录下部署的过程,主要分为以下几个步骤:1.拉取项目。2.构建镜像。3.创建数据库,并配置好数据库权限。4.nginx配置。5.编辑docker compose文件并运行。

拉取项目

git clone https://github.com/songquanpeng/one-api.git
cd one-api

构建镜像

docker build -t one-api:local .

数据库设置

通过终端登录到你的MySQL服务器:

mysql -u root -p

执行以下SQL命令来创建数据库、用户,并授权:

CREATE DATABASE `one-api`;
CREATE USER 'oneapi'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON `one-api`.* TO 'oneapi'@'%';
FLUSH PRIVILEGES;

设置数据库权限

ip link #从ip link命令输出中,假设看到网络接口enp0s3是活动的(state UP),这很可能是你宿主机连接网络的接口。下一步是获取该接口的IP地址。
ip addr show enp0s3 #在命令的输出中,找到与inet关键字相关联的行,这行信息会给出enp0s3接口的IPv4地址。

这个ip地址为宿主机的内部IP地址

开放端口

sudo ufw allow 3000/tcp
sudo ufw reload
sudo ufw allow from any to 10.0.0.198 port 3306
sudo ufw reload

10.0.0.198为上述查询到的宿主机内网ip地址。

nginx配置

# 为 oneapi.junjies.com 配置的服务器 - 处理 HTTP 到 HTTPS 的重定向
server {
    listen 80;
    server_name oneapi.junjies.com;
    return 301 https://$host$request_uri;
}

# 为 oneapi.junjies.com 配置的 SSL 服务器 - 反向代理到本地的 3000 端口
server {
    listen 443 ssl;
    server_name oneapi.junjies.com;

    ssl_certificate /etc/letsencrypt/live/junjies.com/fullchain.pem;  # 使用通配符证书
    ssl_certificate_key /etc/letsencrypt/live/junjies.com/privkey.pem;  # 私钥路径

    location / {
        proxy_pass http://localhost:3000;
        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;
    }
}

编辑docker compose文件并运行

version: '3.4'

services:
  one-api:
    image: one-api:local  # 使用新构建的镜像
    container_name: one-api
    restart: always
    command: --log-dir /app/logs
    ports:
      - "3000:3000"
    volumes:
      - ./data/oneapi:/data
      - ./logs:/app/logs
    environment:
      - SQL_DSN=oneapi:password@tcp(10.0.0.198:3306)/one-api
      - REDIS_CONN_STRING=redis://redis:6379
      - SESSION_SECRET=string
      - TZ=Asia/Shanghai
    depends_on:
      - redis

  redis:
    image: "${REGISTRY:-docker.io}/redis:latest"
    container_name: redis
    restart: always
    ports:
      - "6380:6379"
docker-compose up -d --force-recreate one-api
#这个命令会停止one-api服务的当前实例(如果正在运行),并基于更新后的配置重新启动它。
      

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注