# 离线部署 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