2026年Docker部署One API中转服务完整教程

Docker部署One API中转服务完整教程Ubuntu 安装 Docker curl fsSL https get docker com sh 启动 Docker 服务 sudo systemctl start docker sudo systemctl enable docker 验证安装 docker version 安装最新版 Docker

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



 
     
       
       
# Ubuntu 安装 Docker
curl -fsSL https://get.docker.com | sh
# 启动 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker
# 验证安装
docker --version
 
     
       
       
# 安装最新版 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 验证
docker-compose --version
 
     
       
       
mkdir -p /opt/one-api/data
cd /opt/one-api
 
     
       
       
version: '3.4'
services:
one-api:
image: justsong/one-api:latest
container_name: one-api
restart: always
ports:
- "3000:3000"
volumes:
- ./data:/data
environment:
- TZ=Asia/Shanghai
- SESSION_SECRET=your-random-secret-string-change-this
- SQL_DSN= # 留空则使用 SQLite
healthcheck:
test: ["CMD-SHELL", "wget -q -O- http://localhost:3000/api/status | grep -o '"success":true' | head -c 20"]
interval: 30s
timeout: 10s
retries: 3
 
     
       
       
docker-compose up -d
# 查看日志
docker-compose logs -f

访问 http://your-server-ip:3000,默认账号 root,密码 首次登录务必修改)。

 
     
       
       
version: '3.4'
services:
mysql:
image: mysql:8.0
container_name: one-api-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: your-strong-password
MYSQL_DATABASE: oneapi
MYSQL_USER: oneapi
MYSQL_PASSWORD: your-db-password
volumes:
- ./mysql-data:/var/lib/mysql
networks:
- one-api-network
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
container_name: one-api-redis
restart: always
command: redis-server --requirepass your-redis-password
volumes:
- ./redis-data:/data
networks:
- one-api-network
one-api:
image: justsong/one-api:latest
container_name: one-api
restart: always
ports:
- "3000:3000"
depends_on:
mysql:
condition: service_healthy
environment:
- TZ=Asia/Shanghai
- SESSION_SECRET=your-random-session-secret
- SQL_DSN=oneapi:your-db-password@tcp(mysql:3306)/oneapi
- REDIS_CONN_STRING=redis://:your-redis-password@redis:6379
- SYNC_FREQUENCY=60
volumes:
- ./logs:/app/logs
networks:
- one-api-network
networks:
one-api-network:
driver: bridge
 
     
       
       
# 启动所有服务
docker-compose up -d
# 检查状态
docker-compose ps
# 查看 one-api 日志
docker-compose logs -f one-api
 
     
       
       
# /etc/nginx/sites-available/one-api
server {
listen 80;
server_name api.yourdomain.com;
return 301 https://$host$request_uri;
}
server
}
 bash # 申请 SSL 证书 sudo certbot --nginx -d api.yourdomain.com # 启用配置 sudo ln -s /etc/nginx/sites-available/one-api /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx
 
     
       
       
渠道A(权重3)+ 渠道B(权重1)→ 75%请求走A,25%走B
 
     
       
       
cd /opt/one-api
docker-compose pull
docker-compose up -d
 
     
       
       
#!/bin/bash
# backup.sh - 每天凌晨2点执行
BACKUP_DIR="/backup/one-api"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# 备份 MySQL
docker exec one-api-mysql mysqldump -u oneapi -pyour-db-password oneapi >
$BACKUP_DIR/mysql_$DATE.sql
# 保留最近30天
find $BACKUP_DIR -name "*.sql" -mtime +30 -delete
echo "备份完成: $BACKUP_DIR/mysql_$DATE.sql"
 
     
       
       
# 添加定时任务
crontab -e
# 添加:0 2 * * * /opt/one-api/backup.sh
 
     
       
       
# 检查服务健康状态
docker inspect --format='{{.State.Health.Status}}' one-api
# 查看资源使用
docker stats one-api --no-stream
 
     
       
       
# 查看详细日志
docker-compose logs --tail=100 one-api
# 常见原因:
# - 数据库连接失败:检查 SQL_DSN 格式和密码
# - 端口占用:sudo lsof -i :3000

需确保 Nginx 的 proxy_buffering off 已设置,且 proxy_read_timeout 足够长。

部署过程中遇到问题,优先查看 docker-compose logs,大多数问题都能在日志里找到原因。

💡 懒人提示:不想搭服务器?直接访问 jiekou.ai,注册充值,获得 API Key,修改代码里的 base_url 即可,真的只需要10分钟。

小讯
上一篇 2026-04-20 18:27
下一篇 2026-04-20 18:25

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/265478.html