630980b1bf
Closes #563
82 lines
2.3 KiB
Bash
Executable File
82 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -Eeuo pipefail
|
|
|
|
# TODO: move all mkdir -p ?
|
|
mkdir -p /data/config/auto/scripts/
|
|
# mount scripts individually
|
|
find "${ROOT}/scripts/" -maxdepth 1 -type l -delete
|
|
cp -vrfTs /data/config/auto/scripts/ "${ROOT}/scripts/"
|
|
|
|
# Set up config file
|
|
python /docker/config.py /data/config/auto/config.json
|
|
|
|
if [ ! -f /data/config/auto/ui-config.json ]; then
|
|
echo '{}' >/data/config/auto/ui-config.json
|
|
fi
|
|
|
|
if [ ! -f /data/config/auto/styles.csv ]; then
|
|
touch /data/config/auto/styles.csv
|
|
fi
|
|
|
|
# copy models from original models folder
|
|
mkdir -p /data/models/VAE-approx/ /data/models/karlo/
|
|
|
|
rsync -a --info=NAME ${ROOT}/models/VAE-approx/ /data/models/VAE-approx/
|
|
rsync -a --info=NAME ${ROOT}/models/karlo/ /data/models/karlo/
|
|
|
|
declare -A MOUNTS
|
|
|
|
MOUNTS["/root/.cache"]="/data/.cache"
|
|
MOUNTS["${ROOT}/models"]="/data/models"
|
|
|
|
MOUNTS["${ROOT}/embeddings"]="/data/embeddings"
|
|
MOUNTS["${ROOT}/config.json"]="/data/config/auto/config.json"
|
|
MOUNTS["${ROOT}/ui-config.json"]="/data/config/auto/ui-config.json"
|
|
MOUNTS["${ROOT}/styles.csv"]="/data/config/auto/styles.csv"
|
|
MOUNTS["${ROOT}/extensions"]="/data/config/auto/extensions"
|
|
MOUNTS["${ROOT}/config_states"]="/data/config/auto/config_states"
|
|
|
|
# extra hacks
|
|
MOUNTS["${ROOT}/repositories/CodeFormer/weights/facelib"]="/data/.cache"
|
|
|
|
for to_path in "${!MOUNTS[@]}"; do
|
|
set -Eeuo pipefail
|
|
from_path="${MOUNTS[${to_path}]}"
|
|
rm -rf "${to_path}"
|
|
if [ ! -f "$from_path" ]; then
|
|
mkdir -vp "$from_path"
|
|
fi
|
|
mkdir -vp "$(dirname "${to_path}")"
|
|
ln -sT "${from_path}" "${to_path}"
|
|
echo Mounted $(basename "${from_path}")
|
|
done
|
|
|
|
echo "Installing extension dependencies (if any)"
|
|
|
|
# because we build our container as root:
|
|
chown -R root ~/.cache/
|
|
chmod 766 ~/.cache/
|
|
|
|
shopt -s nullglob
|
|
# For install.py, please refer to https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Developing-extensions#installpy
|
|
list=(./extensions/*/install.py)
|
|
for installscript in "${list[@]}"; do
|
|
EXTNAME=`echo $installscript | cut -d '/' -f 3`
|
|
# Skip installing dependencies if extension is disabled in config
|
|
if `jq -e ".disabled_extensions|any(. == \"$EXTNAME\")" config.json`; then
|
|
echo "Skipping disabled extension ($EXTNAME)"
|
|
continue
|
|
fi
|
|
PYTHONPATH=${ROOT} python "$installscript"
|
|
done
|
|
|
|
if [ -f "/data/config/auto/startup.sh" ]; then
|
|
pushd ${ROOT}
|
|
echo "Running startup script"
|
|
. /data/config/auto/startup.sh
|
|
popd
|
|
fi
|
|
|
|
exec "$@"
|