# 在服务器上执行
cd /opt # 或其他你喜欢的目录
sudo git clone https://github.com/HanphoneJan/generate-poems.git
cd generate-poems
或者手动上传项目文件到服务器。
# 复制环境变量模板
cp env.example .env
# 编辑环境变量文件
nano .env
填写以下内容(根据你的实际情况修改):
DATABASE_URL="file:./db/custom.db"
API_BASE_URL="https://api.deepseek.com"
API_KEY="your-deepseek-api-key-here" # 必须替换为你的真实 API Key
PORT=4666
NODE_ENV=production
OPENAI_API_KEY="xxxxx" # 设置这个是为了Docker部署时,解决OPENAI_SDK触发的环境变量错误
# 方式一:使用 docker-compose(推荐)
docker-compose build
# 方式二:使用 docker 命令
docker build -t generate-poems:latest .
# 使用 docker-compose 启动
docker-compose up -d
# 查看容器状态
docker-compose ps
# 查看容器日志
docker-compose logs -f app
# 检查容器是否正常运行
docker ps | grep generate-poems
# 测试应用是否可访问
curl http://localhost:4666/generate-poems
如果一切正常,你应该能看到应用的 HTML 内容。
sudo apt update
sudo apt install nginx -y
sudo nano /etc/nginx/sites-available/generate-poems
添加以下内容:
server {
listen 80;
server_name your-domain.com; # 替换为你的域名或服务器 IP
location /generate-poems {
proxy_pass http://localhost:4666;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
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;
proxy_cache_bypass $http_upgrade;
proxy_read_timeout 86400;
}
# 可选:配置 HTTPS
# listen 443 ssl;
# ssl_certificate /path/to/cert.pem;
# ssl_certificate_key /path/to/key.pem;
}
# 创建软链接
sudo ln -s /etc/nginx/sites-available/generate-poems /etc/nginx/sites-enabled/
# 测试配置
sudo nginx -t
# 重启 Nginx
sudo systemctl restart nginx
现在你可以通过 http://your-domain.com/generate-poems 访问应用。
# 安装 Certbot
sudo apt install certbot python3-certbot-nginx -y
# 获取 SSL 证书
sudo certbot --nginx -d your-domain.com
# 自动续期
sudo certbot renew --dry-run
# 启动容器
docker-compose up -d
# 停止容器
docker-compose down
# 重启容器
docker-compose restart
# 查看日志
docker-compose logs -f app
# 进入容器
docker-compose exec app sh
# 更新应用
git pull
docker-compose build
docker-compose up -d
# 查看数据库文件
ls -la prisma/db/
# 备份数据库
docker-compose exec app cp /app/prisma/db/custom.db /app/prisma/db/custom.db.backup
# 恢复数据库
docker-compose exec app cp /app/prisma/db/custom.db.backup /app/prisma/db/custom.db
# 查看详细日志
docker-compose logs app
# 检查端口占用
sudo netstat -tlnp | grep 4666
# 检查 Docker 磁盘空间
docker system df
# 检查容器状态
docker ps | grep generate-poems
# 检查防火墙
sudo ufw status
sudo ufw allow 4666/tcp
# 检查容器内部网络
docker-compose exec app wget -O- http://localhost:4666/health
# 进入容器
docker-compose exec app sh
# 检查数据库文件
ls -la /app/prisma/db/
# 重新生成 Prisma 客户端
npx prisma generate
# 推送数据库 schema
npx prisma db push
# 清理 Docker 缓存
docker system prune -a
# 重新构建
docker-compose build --no-cache
在 docker-compose.yml 中添加:
services:
app:
# ... 其他配置
deploy:
resources:
limits:
cpus: '1.0'
memory: 512M
reservations:
cpus: '0.5'
memory: 256M
已在 Dockerfile 中实现,可以减小镜像大小。
在构建时使用 BuildKit:
DOCKER_BUILDKIT=1 docker-compose build
.env 文件提交到版本控制系统docker pull node:20-alpine