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