| 
									
										
										
										
											2022-09-05 19:51:22 +02:00
										 |  |  | #!/bin/bash
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-01 12:57:53 +02:00
										 |  |  | set -Eeuo pipefail | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-30 10:01:18 +01:00
										 |  |  | # TODO: move all mkdir -p ? | 
					
						
							| 
									
										
										
										
											2022-10-30 09:42:30 +01:00
										 |  |  | mkdir -p /data/config/auto/scripts/ | 
					
						
							| 
									
										
										
										
											2023-01-19 06:37:53 +01:00
										 |  |  | # mount scripts individually | 
					
						
							| 
									
										
										
										
											2023-11-13 21:12:07 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | echo $ROOT | 
					
						
							|  |  |  | ls -lha $ROOT | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-27 07:55:22 +01:00
										 |  |  | find "${ROOT}/scripts/" -maxdepth 1 -type l -delete | 
					
						
							|  |  |  | cp -vrfTs /data/config/auto/scripts/ "${ROOT}/scripts/" | 
					
						
							| 
									
										
										
										
											2023-01-19 06:37:53 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-06 07:38:36 +02:00
										 |  |  | # Set up config file | 
					
						
							|  |  |  | python /docker/config.py /data/config/auto/config.json | 
					
						
							| 
									
										
										
										
											2022-10-14 22:42:34 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-17 18:55:16 +02:00
										 |  |  | if [ ! -f /data/config/auto/ui-config.json ]; then | 
					
						
							|  |  |  |   echo '{}' >/data/config/auto/ui-config.json | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-04 07:48:19 +02:00
										 |  |  | if [ ! -f /data/config/auto/styles.csv ]; then | 
					
						
							|  |  |  |   touch /data/config/auto/styles.csv | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-24 10:06:30 +02:00
										 |  |  | # copy models from original models folder | 
					
						
							| 
									
										
										
										
											2023-06-25 20:21:41 +02:00
										 |  |  | mkdir -p /data/models/VAE-approx/ /data/models/karlo/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-24 10:06:30 +02:00
										 |  |  | rsync -a --info=NAME ${ROOT}/models/VAE-approx/ /data/models/VAE-approx/ | 
					
						
							|  |  |  | rsync -a --info=NAME ${ROOT}/models/karlo/ /data/models/karlo/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-01 12:57:53 +02:00
										 |  |  | declare -A MOUNTS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MOUNTS["/root/.cache"]="/data/.cache" | 
					
						
							| 
									
										
										
										
											2023-06-24 10:06:30 +02:00
										 |  |  | MOUNTS["${ROOT}/models"]="/data/models" | 
					
						
							| 
									
										
										
										
											2022-10-01 12:57:53 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | MOUNTS["${ROOT}/embeddings"]="/data/embeddings" | 
					
						
							| 
									
										
										
										
											2022-10-14 22:42:34 +02:00
										 |  |  | MOUNTS["${ROOT}/config.json"]="/data/config/auto/config.json" | 
					
						
							| 
									
										
										
										
											2022-10-17 18:55:16 +02:00
										 |  |  | MOUNTS["${ROOT}/ui-config.json"]="/data/config/auto/ui-config.json" | 
					
						
							| 
									
										
										
										
											2023-05-04 07:48:19 +02:00
										 |  |  | MOUNTS["${ROOT}/styles.csv"]="/data/config/auto/styles.csv" | 
					
						
							| 
									
										
										
										
											2023-01-25 17:38:25 +01:00
										 |  |  | MOUNTS["${ROOT}/extensions"]="/data/config/auto/extensions" | 
					
						
							| 
									
										
										
										
											2023-05-29 15:17:06 +02:00
										 |  |  | MOUNTS["${ROOT}/config_states"]="/data/config/auto/config_states" | 
					
						
							| 
									
										
										
										
											2022-10-01 12:57:53 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | # 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}" | 
					
						
							| 
									
										
										
										
											2022-10-15 08:08:36 +02:00
										 |  |  |   if [ ! -f "$from_path" ]; then | 
					
						
							| 
									
										
										
										
											2022-10-14 22:42:34 +02:00
										 |  |  |     mkdir -vp "$from_path" | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2022-10-04 19:56:38 +02:00
										 |  |  |   mkdir -vp "$(dirname "${to_path}")" | 
					
						
							| 
									
										
										
										
											2022-10-01 12:57:53 +02:00
										 |  |  |   ln -sT "${from_path}" "${to_path}" | 
					
						
							|  |  |  |   echo Mounted $(basename "${from_path}") | 
					
						
							| 
									
										
										
										
											2022-09-05 19:51:22 +02:00
										 |  |  | done | 
					
						
							| 
									
										
										
										
											2022-10-11 18:18:52 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-24 10:06:30 +02:00
										 |  |  | echo "Installing extension dependencies (if any)" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # because we build our container as root: | 
					
						
							|  |  |  | chown -R root ~/.cache/ | 
					
						
							|  |  |  | chmod 766 ~/.cache/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | shopt -s nullglob | 
					
						
							| 
									
										
										
										
											2023-06-25 18:42:04 +08:00
										 |  |  | # 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 | 
					
						
							| 
									
										
										
										
											2023-11-13 21:12:07 +01:00
										 |  |  |   EXTNAME=$(echo $installscript | cut -d '/' -f 3) | 
					
						
							| 
									
										
										
										
											2023-09-09 15:34:06 +02:00
										 |  |  |   # Skip installing dependencies if extension is disabled in config | 
					
						
							| 
									
										
										
										
											2023-11-13 21:12:07 +01:00
										 |  |  |   if $(jq -e ".disabled_extensions|any(. == \"$EXTNAME\")" config.json); then | 
					
						
							| 
									
										
										
										
											2023-09-09 15:34:06 +02:00
										 |  |  |     echo "Skipping disabled extension ($EXTNAME)" | 
					
						
							|  |  |  |     continue | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2023-06-25 18:42:04 +08:00
										 |  |  |   PYTHONPATH=${ROOT} python "$installscript" | 
					
						
							| 
									
										
										
										
											2023-06-24 10:06:30 +02:00
										 |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-30 10:01:18 +01:00
										 |  |  | if [ -f "/data/config/auto/startup.sh" ]; then | 
					
						
							|  |  |  |   pushd ${ROOT} | 
					
						
							| 
									
										
										
										
											2023-06-24 10:06:30 +02:00
										 |  |  |   echo "Running startup script" | 
					
						
							| 
									
										
										
										
											2022-10-30 10:01:18 +01:00
										 |  |  |   . /data/config/auto/startup.sh | 
					
						
							|  |  |  |   popd | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | exec "$@" |