FROM anchorxia/musev:latest LABEL MAINTAINER="zkangchen" LABEL Description="musev gradio image, from docker pull anchorxia/musev:latest" SHELL ["/bin/bash", "--login", "-c"] RUN useradd -m -u 1000 user USER user ENV HOME=/home/user \ PATH=/home/user/.local/bin:$PATH WORKDIR $HOME/app RUN echo "docker start" \ && whoami \ && which python \ && pwd RUN git clone -b main --recursive https://github.com/TMElyralab/MuseTalk.git RUN chmod -R 777 /home/user/app/MuseTalk RUN . /opt/conda/etc/profile.d/conda.sh \ && echo "source activate musev" >> ~/.bashrc \ && conda activate musev \ && conda env list RUN ffmpeg -codecs WORKDIR /home/user/app/MuseTalk/ RUN pip install -r requirements.txt \ && pip install --no-cache-dir -U openmim \ && mim install mmengine \ && mim install "mmcv>=2.0.1" \ && mim install "mmdet>=3.1.0" \ && mim install "mmpose>=1.1.0" RUN pip install -q -U "huggingface_hub<1.0" # Download models at build time (cached in Docker layer) RUN . /opt/conda/etc/profile.d/conda.sh && conda activate musev && \ mkdir -p models/musetalk models/musetalkV15 models/syncnet \ models/dwpose models/face-parse-bisent models/sd-vae models/whisper && \ huggingface-cli download TMElyralab/MuseTalk \ --local-dir models \ --include "musetalkV15/musetalk.json" "musetalkV15/unet.pth" && \ huggingface-cli download stabilityai/sd-vae-ft-mse \ --local-dir models/sd-vae \ --include "config.json" "diffusion_pytorch_model.bin" "diffusion_pytorch_model.safetensors" && \ huggingface-cli download openai/whisper-tiny \ --local-dir models/whisper \ --include "config.json" "pytorch_model.bin" "preprocessor_config.json" && \ huggingface-cli download yzd-v/DWPose \ --local-dir models/dwpose \ --include "dw-ll_ucoco_384.pth" && \ huggingface-cli download ByteDance/LatentSync \ --local-dir models/syncnet \ --include "latentsync_syncnet.pt" && \ curl -sL https://download.pytorch.org/models/resnet18-5c106cde.pth \ -o models/face-parse-bisent/resnet18-5c106cde.pth && \ python -c "import gdown; gdown.download(id='154JgKpzCPW82qINcVieuPH3fZ2e0P812', output='models/face-parse-bisent/79999_iter.pth', quiet=False)" && \ echo "All models downloaded" COPY --chown=user:user app.py /home/user/app/MuseTalk/app.py COPY --chown=user:user entrypoint.sh /home/user/app/MuseTalk/entrypoint.sh RUN chmod +x /home/user/app/MuseTalk/entrypoint.sh EXPOSE 7860 CMD ["./entrypoint.sh"]