# 离线部署

cd /opt/speakr

# 1. 导入镜像（无需网络）
docker load -i speakr.tar

# 2. 一次性：从镜像里取出前端构建产物和完整 vendor 离线依赖，补进宿主机代码目录
docker create --name speakr-tmp speakr:latest
docker cp speakr-tmp:/app/static/vite ./static/
docker cp speakr-tmp:/app/static/vendor ./static/
docker rm speakr-tmp

# 3. 准备 .env（按转写方式二选一，然后编辑填入密钥等配置）
cp config/env.asr.example .env      # 自建 ASR 服务用这个
# cp config/env.whisper.example .env  # Whisper API 用这个


cd /home/wjs/speakr/speakr

# 1. 把服务器上这份脚本的 CRLF 转成 LF，并确保可执行
sed -i 's/\r$//' scripts/docker-entrypoint.sh
chmod +x scripts/docker-entrypoint.sh

# 2. 删掉一直重启的旧容器
docker rm -f speakr

# 3. 重新启动：多加一条单文件挂载，用修好的脚本覆盖镜像里那份坏的
docker run -d \
  --name speakr \
  --restart unless-stopped \
  -p 5000:8899 \
  -v /home/wjs/speakr/speakr:/app \
  -v /home/wjs/speakr/speakr/scripts/docker-entrypoint.sh:/usr/local/bin/docker-entrypoint.sh \
  -v /home/wjs/speakr/uploads:/data/uploads \
  -v /home/wjs/speakr/instance:/data/instance \
  speakr:v2

# 4. 确认启动正常（应看到"数据库不存在，正在创建..."之类的日志）
docker logs -f speakr

# 合并压缩

cat speakr.tar.part* > speakr.tar