MuseTalk / Dockerfile
gonefishin1's picture
fix: COPY app.py into Docker image (was using GitHub clone, not our custom version)
fa2112e verified
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"]