好的!既然你不想使用 Dockerfile,我们就完全不写 Dockerfile,改用你 Leader 提到的思路:
用基础镜像启动一个容器 → 手动在容器里安装依赖和复制项目 → 保存为新镜像
这个方式更直观,就像“你进入容器自己配置环境,然后打包成成品”。以下是最详细的从零到部署的手动流程,确保你能在 Windows 上成功构建适用于 CentOS 服务器的 Docker 镜像。
你将在 Windows 上操作:
确保你本地已安装:
roop
项目完整目录,包括 requirements.txt
和 api.py
我们用 NVIDIA 官方 CUDA 镜像(Ubuntu 基础,兼容性好):
docker pull nvidia/cuda:11.8.0-runtime-ubuntu20.04
确认下载成功:
docker images
docker run -it --gpus all --name roop-builder nvidia/cuda:11.8.0-runtime-ubuntu20.04 bash
你现在就在一个容器里了。
在容器内执行以下命令:
apt update && apt install -y \
curl git build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget llvm libncurses5-dev \
libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev
# 安装 pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
# 安装 Python 3.10
pyenv install 3.10.13
pyenv global 3.10.13
# 验证
python --version
pip install --upgrade pip
打开另一个终端(不关闭当前容器),执行:
docker cp C:\Your\Roop\Project\Path roop-builder:/app
例如:
docker cp C:\Users\you\roop roop-builder:/app
cd /app
pip install -r requirements.txt
python api.py
如果一切正常,说明容器配置好了。
exit
,先停一下):CTRL + P + Q # 组合键,挂起容器
docker commit roop-builder roop-image:v1
docker save -o roop-image-v1.tar roop-image:v1
将 roop-image-v1.tar
通过 scp 或 xftp 传到服务器上:
scp roop-image-v1.tar user@server-ip:/home/user/
然后在服务器上执行:
docker load -i roop-image-v1.tar
docker run -it --gpus all -p 7860:7860 roop-image:v1 bash
(根据你项目监听的端口调整 -p
)
步骤 | 内容 |
---|---|
✅ 拉基础镜像 | nvidia/cuda:11.8.0-runtime-ubuntu20.04 |
✅ 进入容器 | 用 docker run -it 启动容器 |
✅ 安装 Python 3.10 | 用 pyenv |
✅ 拷贝项目 | docker cp |
✅ 安装依赖 | pip install -r requirements.txt |
✅ 保存镜像 | docker commit + docker save |
✅ 部署服务器 | scp + docker load |
你只要按步骤操作,不用写一行 Dockerfile,也能打包成部署镜像。需要我为你打包这些命令成 .bat
脚本或自动化脚本吗?我也可以帮你 ✅