Improve docker files and use a non-root user
This commit is contained in:
1 parent
2bd1a5b43b
commit
4041defb8d
7 files changed
+40
-35
No files matched your search
+9
-15
@@ -9,8 +9,6 @@ ENV TTS_MODEL=$TTS_MODEL
|
||||
ARG DEEPSPEED_VERSION=0.16.2
|
||||
ENV DEEPSPEED_VERSION=$DEEPSPEED_VERSION
|
||||
|
||||
ARG ALLTALK_DIR=/opt/alltalk
|
||||
|
||||
ENV GRADIO_SERVER_NAME="0.0.0.0"
|
||||
|
||||
# Switch for using the multi engine manager:
|
||||
@@ -59,10 +57,7 @@ EOR
|
||||
# Download all RVC models:
|
||||
##############################################################################
|
||||
COPY system/tts_engines/rvc_files.json system/tts_engines/
|
||||
RUN <<EOR
|
||||
rvc_files=$( jq -r '.[]' system/tts_engines/rvc_files.json )
|
||||
echo "$rvc_files" | xargs -n 1 curl --create-dirs --output-dir models/rvc_base -LO
|
||||
EOR
|
||||
RUN jq -r '.[]' system/tts_engines/rvc_files.json | xargs -n 1 curl --create-dirs --output-dir models/rvc_base -LO
|
||||
|
||||
##############################################################################
|
||||
# Install python dependencies (cannot use --no-deps because requirements are not complete)
|
||||
@@ -74,7 +69,7 @@ ENV PIP_CACHE_DIR=${ALLTALK_DIR}/pip_cache
|
||||
RUN <<EOR
|
||||
conda activate alltalk
|
||||
|
||||
mkdir ${ALLTALK_DIR}/pip_cache
|
||||
mkdir -p ${ALLTALK_DIR}/pip_cache
|
||||
pip install --no-cache-dir --cache-dir=${ALLTALK_DIR}/pip_cache -r system/requirements/requirements_standalone.txt
|
||||
pip install --no-cache-dir --cache-dir=${ALLTALK_DIR}/pip_cache --upgrade gradio==4.32.2
|
||||
|
||||
@@ -144,7 +139,7 @@ merge_json_files() {
|
||||
replace_env_vars docker_default_confignew.json
|
||||
merge_json_files confignew.json
|
||||
|
||||
conda activate alltalk
|
||||
source ${ALLTALK_DIR}/conda_env.sh
|
||||
|
||||
if [ "\$ALLTALK_ENABLE_MULTI_ENGINE_MANAGER" = true ] ; then
|
||||
echo "Starting alltalk using multi engine manager"
|
||||
@@ -160,13 +155,13 @@ EOF
|
||||
#!/usr/bin/env bash
|
||||
source ~/.bashrc
|
||||
export TRAINER_TELEMETRY=0
|
||||
conda activate alltalk
|
||||
source ${ALLTALK_DIR}/conda_env.sh
|
||||
python finetune.py
|
||||
EOF
|
||||
cat << EOF > start_diagnostics.sh
|
||||
#!/usr/bin/env bash
|
||||
source ~/.bashrc
|
||||
conda activate alltalk
|
||||
source ${ALLTALK_DIR}/conda_env.sh
|
||||
python diagnostics.py
|
||||
EOF
|
||||
chmod +x start_alltalk.sh
|
||||
@@ -174,21 +169,20 @@ EOF
|
||||
chmod +x start_diagnostics.sh
|
||||
EOR
|
||||
|
||||
COPY . .
|
||||
COPY --chown=alltalk:alltalk . .
|
||||
|
||||
##############################################################################
|
||||
# Create script to execute firstrun.py and run it:
|
||||
##############################################################################
|
||||
RUN echo $'#!/usr/bin/env bash \n\
|
||||
source ~/.bashrc \n\
|
||||
conda activate alltalk \n\
|
||||
source ${ALLTALK_DIR}/conda_env.sh \n\
|
||||
python ./system/config/firstrun.py $@' > ./start_firstrun.sh
|
||||
|
||||
RUN chmod +x start_firstrun.sh
|
||||
RUN ./start_firstrun.sh --tts_model $TTS_MODEL
|
||||
|
||||
RUN mkdir -p ${ALLTALK_DIR}/outputs
|
||||
RUN mkdir -p /root/.triton/autotune
|
||||
RUN mkdir -p ${ALLTALK_DIR}/outputs ${ALLTALK_DIR}/.triton/autotune
|
||||
|
||||
##############################################################################
|
||||
# Enable deepspeed for all models:
|
||||
@@ -198,4 +192,4 @@ RUN find . -name model_settings.json -exec sed -i -e 's/"deepspeed_enabled": fal
|
||||
##############################################################################
|
||||
# Start alltalk:
|
||||
##############################################################################
|
||||
ENTRYPOINT ["sh", "-c", "./start_alltalk.sh"]
|
||||
ENTRYPOINT ["sh", "-c", "./start_alltalk.sh"]
|
||||
@@ -102,7 +102,6 @@ docker buildx \
|
||||
build \
|
||||
--progress=plain \
|
||||
--build-arg TTS_MODEL=$TTS_MODEL \
|
||||
--build-arg ALLTALK_DIR=$ALLTALK_DIR \
|
||||
--build-arg DEEPSPEED_VERSION=$DEEPSPEED_VERSION \
|
||||
--build-arg DOCKER_TAG=$DOCKER_TAG \
|
||||
--build-arg DOCKER_REPOSITORY=$DOCKER_REPOSITORY \
|
||||
|
||||
@@ -8,6 +8,7 @@ ALLTALK_ENABLE_MULTI_ENGINE_MANAGER=false
|
||||
MULTI_ENGINE_MANAGER_CONFIG=
|
||||
DOCKER_TAG=latest-xtts
|
||||
DOCKER_REPOSITORY=erew123
|
||||
ALLTALK_DIR=/home/alltalk
|
||||
declare -a ADDITIONAL_ARGS=()
|
||||
|
||||
# Parse arguments
|
||||
|
||||
+18
-1
@@ -14,7 +14,7 @@ ENV CUDA_DOCKER_ARCH=all
|
||||
ENV NVIDIA_VISIBLE_DEVICES=all
|
||||
ENV CONDA_AUTO_UPDATE_CONDA="false"
|
||||
|
||||
ENV ALLTALK_DIR=/opt/alltalk
|
||||
ENV ALLTALK_DIR=/home/alltalk
|
||||
|
||||
##############################################################################
|
||||
# Installation/Basic Utilities
|
||||
@@ -32,6 +32,10 @@ RUN <<EOR
|
||||
apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||
EOR
|
||||
|
||||
# Create a non-root user and switch to it for security
|
||||
RUN useradd -ms /bin/bash alltalk
|
||||
USER alltalk
|
||||
|
||||
##############################################################################
|
||||
# Create a conda environment and install dependencies:
|
||||
##############################################################################
|
||||
@@ -77,4 +81,17 @@ RUN <<EOR
|
||||
echo "Failed to install pip dependencies: $RESULT"
|
||||
exit 1
|
||||
fi
|
||||
EOR
|
||||
|
||||
RUN <<EOR
|
||||
# See https://gist.github.com/xkortex/5ae49d7e6e969405bd2c3152a949c1f1
|
||||
cat << EOF > ${ALLTALK_DIR}/conda_env.sh
|
||||
#!/usr/bin/env bash
|
||||
source ~/.bashrc
|
||||
__conda_setup="\$('/opt/conda/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
|
||||
eval "\$__conda_setup"
|
||||
unset __conda_setup
|
||||
|
||||
conda activate alltalk
|
||||
EOF
|
||||
EOR
|
||||
+10
-15
@@ -5,11 +5,7 @@ FROM ${DOCKER_REPOSITORY}alltalk_tts_environment:${DOCKER_TAG}
|
||||
ARG DEEPSPEED_VERSION=0.16.3
|
||||
ENV DEEPSPEED_VERSION=$DEEPSPEED_VERSION
|
||||
|
||||
##############################################################################
|
||||
# Directories:
|
||||
##############################################################################
|
||||
ENV STAGE_DIR=/tmp
|
||||
RUN mkdir -p ${STAGE_DIR}
|
||||
WORKDIR ${ALLTALK_DIR}
|
||||
|
||||
##############################################################################
|
||||
# Install python dependencies
|
||||
@@ -27,8 +23,8 @@ EOR
|
||||
# Clone DeepSpeed sources
|
||||
##############################################################################
|
||||
RUN <<EOR
|
||||
git clone https://github.com/microsoft/DeepSpeed.git ${STAGE_DIR}/DeepSpeed
|
||||
cd ${STAGE_DIR}/DeepSpeed
|
||||
git clone https://github.com/microsoft/DeepSpeed.git ${ALLTALK_DIR}/DeepSpeed
|
||||
cd ${ALLTALK_DIR}/DeepSpeed
|
||||
git checkout .
|
||||
git checkout "tags/v${DEEPSPEED_VERSION}" -b "v${DEEPSPEED_VERSION}"
|
||||
|
||||
@@ -46,21 +42,20 @@ EOR
|
||||
# Create DeepSpeed build file
|
||||
##############################################################################
|
||||
RUN <<EOR
|
||||
cat << EOF > build_deepspeed.sh
|
||||
cat << EOF > ${ALLTALK_DIR}/build_deepspeed.sh
|
||||
#!/usr/bin/env bash
|
||||
source ~/.bashrc
|
||||
mkdir -p /deepspeed
|
||||
source ${ALLTALK_DIR}/conda_env.sh
|
||||
mkdir -p ${ALLTALK_DIR}/build
|
||||
|
||||
conda activate alltalk
|
||||
cd ${STAGE_DIR}/DeepSpeed
|
||||
cd ${ALLTALK_DIR}/DeepSpeed
|
||||
DS_BUILD_OPS=1 python setup.py build_ext -j8 bdist_wheel
|
||||
mv ${STAGE_DIR}/DeepSpeed/dist/*.whl /deepspeed/
|
||||
mv ${ALLTALK_DIR}/DeepSpeed/dist/*.whl ${ALLTALK_DIR}/build
|
||||
EOF
|
||||
EOR
|
||||
|
||||
RUN chmod +x /build_deepspeed.sh
|
||||
RUN chmod +x ${ALLTALK_DIR}/build_deepspeed.sh
|
||||
|
||||
##############################################################################
|
||||
# Build DeepSpeed:
|
||||
##############################################################################
|
||||
ENTRYPOINT ["/build_deepspeed.sh"]
|
||||
ENTRYPOINT ["bash", "-c", "-l", "$ALLTALK_DIR/build_deepspeed.sh"]
|
||||
@@ -7,6 +7,7 @@ cd $SCRIPT_DIR
|
||||
|
||||
DOCKER_TAG=latest
|
||||
DOCKER_REPOSITORY=erew123
|
||||
ALLTALK_DIR=/home/alltalk
|
||||
|
||||
# Parse arguments
|
||||
while [ "$#" -gt 0 ]; do
|
||||
@@ -67,6 +68,5 @@ docker run \
|
||||
-it \
|
||||
--gpus=all \
|
||||
--name deepspeed \
|
||||
--build-arg DOCKER_TAG=$DOCKER_TAG \
|
||||
-v $SCRIPT_DIR/build:/deepspeed \
|
||||
-v $SCRIPT_DIR/build:${ALLTALK_DIR}/build \
|
||||
${DOCKER_REPOSITORY}alltalk_deepspeed:${DOCKER_TAG}
|
||||
@@ -4,7 +4,6 @@ declare -A ALLTALK_VARS
|
||||
ALLTALK_VARS["CUDA_VERSION"]=12.6.0
|
||||
ALLTALK_VARS["PYTHON_VERSION"]=3.11.11
|
||||
ALLTALK_VARS["DEEPSPEED_VERSION"]=0.16.2
|
||||
ALLTALK_VARS["ALLTALK_DIR"]=/opt/alltalk
|
||||
|
||||
# Export single variables (needed by Docker locally)
|
||||
for key in "${!ALLTALK_VARS[@]}"
|
||||
|
||||
Reference in new issue
Block a user