diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index db5d840..665c9c0 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -12,12 +12,58 @@ jobs: build: strategy: matrix: - profile: - - auto - - comfy - - download + include: + - image: simonmcnair/AUTOMATIC1111 + dockerfile: services/AUTOMATIC1111/Dockerfile + context: services/AUTOMATIC1111/ + + - image: simonmcnair/comfy + dockerfile: services/comfy/Dockerfile + context: services/comfy/ + + - image: simonmcnair/download + dockerfile: services/download/Dockerfile + context: services/download/ + + - image: simonmcnair/fooocus + dockerfile: services/fooocus/Dockerfile + context: services/fooocus/ + + - image: simonmcnair/forge + dockerfile: services/forge/Dockerfile + context: services/forge/ + runs-on: ubuntu-latest name: ${{ matrix.profile }} steps: - - uses: actions/checkout@v3 - - run: docker compose --profile ${{ matrix.profile }} build --progress plain + # - uses: actions/checkout@v3 + # - run: docker compose --profile ${{ matrix.profile }} build --progress plain + + - name: Checkout + uses: actions/checkout@v3 + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 + with: + images: ${{ matrix.image }} + - name: Build and push Docker image + uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc + with: + context: ${{ matrix.context }} + file: ${{ matrix.dockerfile }} + push: true + #This is needed because it is called main instead of master to get the latest tag in docker + # tags: | + # set latest tag for default branch + # type=raw,value=latest,enable={{is_default_branch}} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/README.md b/README.md index 46b5630..01872d9 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ +I have forked this as AbdBarho hasn't been around for a while. I'm not great with git, Linux , docker or stable diffusion but I manage to get along a bit. Slowly. with more commits than it takes. + +I am happy to look at PR's as and when. Also happy to pass this back, as and whe, and if, they return. + + # Stable Diffusion WebUI Docker Run Stable Diffusion on your machine with a nice UI without any hassle! diff --git a/docker-compose.yml b/docker-compose.yml index 995427e..46c17b0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -42,20 +42,7 @@ services: deploy: {} environment: - CLI_ARGS=--no-half --precision full --allow-code --enable-insecure-extension-access --api - invoke: &invoke - <<: *base_service - profiles: ["invoke"] - build: ./services/invoke/ - image: sd-invoke:30 - environment: - - PRELOAD=true - - CLI_ARGS=--xformers - # invoke-cpu: - # <<: *invoke - # profiles: ["invoke-cpu"] - # environment: - # - PRELOAD=true - # - CLI_ARGS=--always_use_cpu + comfy: &comfy <<: *base_service profiles: ["comfy"] @@ -63,6 +50,7 @@ services: image: sd-comfy:6 environment: - CLI_ARGS= + comfy-cpu: <<: *comfy profiles: ["comfy-cpu"] @@ -76,4 +64,4 @@ services: build: ./services/fooocus/ image: sd-fooocus:3 environment: - - CLI_ARGS= \ No newline at end of file + - CLI_ARGS= diff --git a/services/AUTOMATIC1111/Dockerfile b/services/AUTOMATIC1111/Dockerfile index 047bc95..8cafbd2 100644 --- a/services/AUTOMATIC1111/Dockerfile +++ b/services/AUTOMATIC1111/Dockerfile @@ -14,7 +14,8 @@ RUN . /clone.sh generative-models https://github.com/Stability-AI/generative-mod RUN . /clone.sh stable-diffusion-webui-assets https://github.com/AUTOMATIC1111/stable-diffusion-webui-assets 6f7db241d2f8ba7457bac5ca9753331f0c266917 -FROM pytorch/pytorch:2.3.0-cuda12.1-cudnn8-runtime +#FROM pytorch/pytorch:2.3.0-cuda12.1-cudnn8-runtime +FROM pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1 @@ -23,24 +24,73 @@ RUN --mount=type=cache,target=/var/cache/apt \ # we need those apt-get install -y fonts-dejavu-core rsync git jq moreutils aria2 \ # extensions needs those - ffmpeg libglfw3-dev libgles2-mesa-dev pkg-config libcairo2 libcairo2-dev build-essential + ffmpeg libglfw3-dev libgles2-mesa-dev pkg-config libcairo2 libcairo2-dev build-essential libgoogle-perftools-dev && \ + apt-get clean +ARG PUID=0 +ARG PGID=0 +ARG USER_HOME=/root +# set build args as container environment variables for entrypoint reference +ENV PUID=$PUID +ENV PGID=$PGID +ENV USER_HOME=$USER_HOME + +# if user home does not exist, create it +RUN mkdir -p "$USER_HOME" + +# home already exists, chown it +RUN chown -R "${PUID}:${PGID}" "$USER_HOME" + +# Only groupadd if we're non root +RUN if [ "$PGID" -ne "0" ]; then \ + echo non root group detected; \ + groupadd \ + --gid "$PGID" \ + stablediffusion ;\ + else \ + echo "root group detected" ; \ + fi + +# Only useradd if we're non root +RUN if [ "$PUID" -ne "0" ]; then \ + echo non root user detected; \ + useradd \ + --gid="$PGID" \ + --no-user-group \ + -M \ + --home "$USER_HOME" \ + stablediffusion ; \ + else \ + echo "root group detected" ; \ + fi WORKDIR / -RUN --mount=type=cache,target=/root/.cache/pip \ - git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git && \ +ENV ROOT=/stable-diffusion-webui + +RUN --mount=type=cache,target=/root/.cache/sd \ + git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git ${ROOT} && \ cd stable-diffusion-webui && \ - git reset --hard v1.10.0 && \ + git reset --hard v1.10.1 && \ pip install -r requirements_versions.txt RUN pip install --upgrade typing-extensions -ENV ROOT=/stable-diffusion-webui -COPY --from=download /repositories/ ${ROOT}/repositories/ +RUN \ + # mv ${ROOT}/style.css ${ROOT}/user.css && \ + # one of the ugliest hacks I ever wrote \ + # updated from 3.10.to 3.11 + sed -i 's/in_app_dir = .*/in_app_dir = True/g' /opt/conda/lib/python3.11/site-packages/gradio/routes.py && \ + git config --global --add safe.directory '*' + +# drop permissions (if build targets non root) +#USER $PUID:$PGID + + +COPY --from=download --chown=${PUID}:${PGID} /repositories/ ${ROOT}/repositories/ RUN mkdir ${ROOT}/interrogate && cp ${ROOT}/repositories/clip-interrogator/clip_interrogator/data/* ${ROOT}/interrogate -RUN --mount=type=cache,target=/root/.cache/pip \ +RUN --mount=type=cache,target=/root/.cache/repos \ pip install pyngrok xformers==0.0.26.post1 \ git+https://github.com/TencentARC/GFPGAN.git@8d2447a2d918f8eba5a4a01463fd48e45126a379 \ git+https://github.com/openai/CLIP.git@d50d76daa670286dd6cacf3bcd80b5e4823fc8e1 \ @@ -48,16 +98,11 @@ RUN --mount=type=cache,target=/root/.cache/pip \ # there seems to be a memory leak (or maybe just memory not being freed fast enough) that is fixed by this version of malloc # maybe move this up to the dependencies list. -RUN apt-get -y install libgoogle-perftools-dev && apt-get clean ENV LD_PRELOAD=libtcmalloc.so COPY . /docker - -RUN \ - # mv ${ROOT}/style.css ${ROOT}/user.css && \ - # one of the ugliest hacks I ever wrote \ - sed -i 's/in_app_dir = .*/in_app_dir = True/g' /opt/conda/lib/python3.10/site-packages/gradio/routes.py && \ - git config --global --add safe.directory '*' +RUN chown -R "$PUID:$PGID" "${ROOT}" +RUN chown -R "$PUID:$PGID" /docker WORKDIR ${ROOT} ENV NVIDIA_VISIBLE_DEVICES=all diff --git a/services/AUTOMATIC1111/entrypoint.sh b/services/AUTOMATIC1111/entrypoint.sh index 35023af..4313803 100755 --- a/services/AUTOMATIC1111/entrypoint.sh +++ b/services/AUTOMATIC1111/entrypoint.sh @@ -26,12 +26,13 @@ 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/ +rsync --info=NAME ${ROOT}/models/VAE-approx/ /data/models/VAE-approx/ +rsync --info=NAME ${ROOT}/models/karlo/ /data/models/karlo/ declare -A MOUNTS -MOUNTS["/root/.cache"]="/data/.cache" +#MOUNTS["/root/.cache"]="/data/.cache" +MOUNTS["${USER_HOME}/.cache"]="/data/.cache" MOUNTS["${ROOT}/models"]="/data/models" MOUNTS["${ROOT}/embeddings"]="/data/embeddings" @@ -58,10 +59,12 @@ done echo "Installing extension dependencies (if any)" -# because we build our container as root: -chown -R root ~/.cache/ +chown -R $PUID:$PGID ~/.cache/ chmod 766 ~/.cache/ +chown -R $PUID:$PGID /output +chmod 766 /output + shopt -s nullglob # For install.py, please refer to https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Developing-extensions#installpy list=(./extensions/*/install.py) diff --git a/services/comfy/Dockerfile b/services/comfy/Dockerfile index 2de504d..3984675 100644 --- a/services/comfy/Dockerfile +++ b/services/comfy/Dockerfile @@ -2,18 +2,59 @@ FROM pytorch/pytorch:2.3.0-cuda12.1-cudnn8-runtime ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1 -RUN apt-get update && apt-get install -y git && apt-get clean +RUN apt-get update && apt-get install -y git libgoogle-perftools-dev && apt-get clean + +ARG PUID=0 +ARG PGID=0 +ARG USER_HOME=/root +# set build args as container environment variables for entrypoint reference +ENV PUID=$PUID +ENV PGID=$PGID +ENV USER_HOME=$USER_HOME + +# if user home does not exist, create it +RUN mkdir -p "$USER_HOME" + +# home already exists, chown it +RUN chown -R "${PUID}:${PGID}" "$USER_HOME" + +# Only groupadd if we're non root +RUN if [ "$PGID" -ne "0" ]; then \ + echo non root group detected; \ + groupadd \ + --gid "$PGID" \ + stablediffusion ;\ + else \ + echo "root group detected" ; \ + fi + +# Only useradd if we're non root +RUN if [ "$PUID" -ne "0" ]; then \ + echo non root user detected; \ + useradd \ + --gid="$PGID" \ + --no-user-group \ + -M \ + --home "$USER_HOME" \ + stablediffusion ; \ + else \ + echo "root group detected" ; \ + fi + +USER $PUID:$PGID ENV ROOT=/stable-diffusion -RUN --mount=type=cache,target=/root/.cache/pip \ +RUN --mount=type=cache,target="$USER_HOME"/.cache/pip \ git clone https://github.com/comfyanonymous/ComfyUI.git ${ROOT} && \ cd ${ROOT} && \ git checkout master && \ git reset --hard 276f8fce9f5a80b500947fb5745a4dde9e84622d && \ pip install -r requirements.txt +RUN chown -R "$PUID:$PGID" "${ROOT}" + WORKDIR ${ROOT} -COPY . /docker/ +COPY --chown=$PUID:$PGID . /docker RUN chmod u+x /docker/entrypoint.sh && cp /docker/extra_model_paths.yaml ${ROOT} ENV NVIDIA_VISIBLE_DEVICES=all PYTHONPATH="${PYTHONPATH}:${PWD}" CLI_ARGS="" diff --git a/services/comfy/entrypoint.sh b/services/comfy/entrypoint.sh index b4299a7..f10eb66 100755 --- a/services/comfy/entrypoint.sh +++ b/services/comfy/entrypoint.sh @@ -6,7 +6,7 @@ mkdir -vp /data/config/comfy/custom_nodes declare -A MOUNTS -MOUNTS["/root/.cache"]="/data/.cache" +MOUNTS["${USER_HOME}/.cache"]="/data/.cache" MOUNTS["${ROOT}/input"]="/data/config/comfy/input" MOUNTS["${ROOT}/output"]="/output/comfy" @@ -28,4 +28,7 @@ if [ -f "/data/config/comfy/startup.sh" ]; then popd fi +chown -R $PUID:$PGID ~/.cache/ +chmod 776 ~/.cache/ + exec "$@" diff --git a/services/download/Dockerfile b/services/download/Dockerfile index a95ad03..78c11ee 100644 --- a/services/download/Dockerfile +++ b/services/download/Dockerfile @@ -1,6 +1,12 @@ FROM bash:alpine3.19 +ARG PUID=0 +ARG PGID=0 +# set build args as container environment variables for entrypoint reference +ENV PUID=$PUID +ENV PGID=$PGID + RUN apk update && apk add parallel aria2 -COPY . /docker +COPY --chown=$PUID:$PGID . /docker RUN chmod +x /docker/download.sh ENTRYPOINT ["/docker/download.sh"] diff --git a/services/fooocus/Dockerfile b/services/fooocus/Dockerfile index 1892f6b..08b9b5f 100644 --- a/services/fooocus/Dockerfile +++ b/services/fooocus/Dockerfile @@ -6,39 +6,77 @@ FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1 -RUN apt-get update && apt-get install -y git && apt-get clean +RUN apt-get update && apt-get install -y git libglib2.0-0 libgl1-mesa-glx python-dev libgoogle-perftools-dev && apt-get clean -# add in required packages -RUN apt-get install 'libglib2.0-0' -y -RUN apt-get install 'libgl1-mesa-glx' -y -RUN apt-get install 'python-dev' -y +ARG PUID=0 +ARG PGID=0 +ARG USER_HOME=/root +# set build args as container environment variables for entrypoint reference +ENV PUID=$PUID +ENV PGID=$PGID +ENV USER_HOME=$USER_HOME + +# if user home does not exist, create it +RUN mkdir -p "$USER_HOME" + +# home already exists, chown it +RUN chown -R "${PUID}:${PGID}" "$USER_HOME" + +# Only groupadd if we're non root +RUN if [ "$PGID" -ne "0" ]; then \ + echo non root group detected; \ + groupadd \ + --gid "$PGID" \ + stablediffusion ;\ + else \ + echo "root group detected" ; \ + fi + +# Only useradd if we're non root +RUN if [ "$PUID" -ne "0" ]; then \ + echo non root user detected; \ + useradd \ + --gid="$PGID" \ + --no-user-group \ + -M \ + --home "$USER_HOME" \ + stablediffusion ; \ + else \ + echo "root group detected" ; \ + fi # set this to your target branch commit ARG BRANCH=main SHA=e2f9bcb11d06216d6800676c48d8d74d6fd77a4b ENV ROOT=/stable-diffusion -RUN --mount=type=cache,target=/root/.cache/pip \ + + +# drop permissions (if build targets non root) +USER $PUID:$PGID + +RUN --mount=type=cache,target=${USER_HOME}/.cache/pip \ git clone https://github.com/lllyasviel/Fooocus.git ${ROOT} && \ cd ${ROOT} && \ git checkout ${BRANCH} && \ git reset --hard ${SHA} && \ pip install -r requirements_versions.txt +RUN chown -R "$PUID:$PGID" "${ROOT}" -RUN --mount=type=cache,target=/root/.cache/pip \ +RUN --mount=type=cache,target=${USER_HOME}/.cache/pip \ --mount=type=bind,from=xformers,source=/wheel.whl,target=/xformers-0.0.21-cp310-cp310-linux_x86_64.whl \ pip install /xformers-0.0.21-cp310-cp310-linux_x86_64.whl WORKDIR ${ROOT} -RUN --mount=type=cache,target=/root/.cache/pip \ +RUN --mount=type=cache,target=${USER_HOME}/.cache/pip \ git fetch && \ git checkout ${BRANCH} && \ git reset --hard ${SHA} && \ pip install -r requirements_versions.txt # add info -COPY . /docker/ +COPY --chown=$PUID:$PGID . /docker RUN cp /docker/config.txt ${ROOT} RUN chmod u+x /docker/entrypoint.sh diff --git a/services/forge/Dockerfile b/services/forge/Dockerfile index d18f430..038b2f7 100644 --- a/services/forge/Dockerfile +++ b/services/forge/Dockerfile @@ -13,53 +13,67 @@ RUN . /clone.sh k-diffusion https://github.com/crowsonkb/k-diffusion.git ab527a9 RUN . /clone.sh clip-interrogator https://github.com/pharmapsychotic/clip-interrogator 2cf03aaf6e704197fd0dae7c7f96aa59cf1b11c9 RUN . /clone.sh generative-models https://github.com/Stability-AI/generative-models 45c443b316737a4ab6e40413d7794a7f5657c19f RUN . /clone.sh stable-diffusion-webui-assets https://github.com/AUTOMATIC1111/stable-diffusion-webui-assets.git 6f7db241d2f8ba7457bac5ca9753331f0c266917 +RUN . /clone.sh huggingface_guess https://github.com/lllyasviel/huggingface_guess.git 70942022b6bcd17d941c1b4172804175758618e2 FROM pytorch/pytorch:2.3.1-cuda12.1-cudnn8-runtime ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1 -RUN --mount=type=cache,target=/var/cache/apt \ +RUN --mount=type=cache,target=/root/apt \ apt-get update && \ # we need those apt-get install -y fonts-dejavu-core rsync git jq moreutils aria2 \ # extensions needs those - ffmpeg libglfw3-dev libgles2-mesa-dev pkg-config libcairo2 libcairo2-dev build-essential + ffmpeg libglfw3-dev libgles2-mesa-dev pkg-config libcairo2 libcairo2-dev build-essential libgoogle-perftools-dev && \ + apt-get clean +ARG PUID=0 +ARG PGID=0 +ARG USER_HOME=/root +# set build args as container environment variables for entrypoint reference +ENV PUID=$PUID +ENV PGID=$PGID +ENV USER_HOME=$USER_HOME + +# if user home does not exist, create it +RUN mkdir -p "$USER_HOME" + +# home already exists, chown it +RUN chown -R "${PUID}:${PGID}" "$USER_HOME" + +# Only groupadd if we're non root +RUN if [ "$PGID" -ne "0" ]; then \ + echo non root group detected; \ + groupadd \ + --gid "$PGID" \ + stablediffusion ;\ + else \ + echo "root group detected" ; \ + fi + +# Only useradd if we're non root +RUN if [ "$PUID" -ne "0" ]; then \ + echo non root user detected; \ + useradd \ + --gid="$PGID" \ + --no-user-group \ + -M \ + --home "$USER_HOME" \ + stablediffusion ; \ + else \ + echo "root group detected" ; \ + fi + +ENV ROOT=/stable-diffusion-webui-forge WORKDIR / -RUN --mount=type=cache,target=/root/.cache/pip \ +RUN --mount=type=cache,target=/root/.cache/forge-repo \ git clone https://github.com/lllyasviel/stable-diffusion-webui-forge.git && \ cd stable-diffusion-webui-forge && \ sed -i '/torch/d' requirements_versions.txt && \ pip install -r requirements_versions.txt -ENV ROOT=/stable-diffusion-webui-forge - -COPY --from=download /repositories/ ${ROOT}/repositories/ -RUN mkdir ${ROOT}/interrogate && cp ${ROOT}/repositories/clip-interrogator/clip_interrogator/data/* ${ROOT}/interrogate -RUN --mount=type=cache,target=/root/.cache/pip \ - pip install -r ${ROOT}/repositories/CodeFormer/requirements.txt - -# Clone and copy huggingface_guess module -RUN git clone https://github.com/lllyasviel/huggingface_guess.git /tmp/huggingface_guess && \ - cp -r /tmp/huggingface_guess/huggingface_guess ${ROOT}/huggingface_guess - -# Ensure torchvision is correctly installed -RUN --mount=type=cache,target=/root/.cache/pip \ - pip install torchvision==0.18.1 - -RUN --mount=type=cache,target=/root/.cache/pip \ - pip install pyngrok xformers==0.0.27 pytorch_lightning torchdiffeq torchsde \ - git+https://github.com/TencentARC/GFPGAN.git@8d2447a2d918f8eba5a4a01463fd48e45126a379 \ - git+https://github.com/openai/CLIP.git@d50d76daa670286dd6cacf3bcd80b5e4823fc8e1 \ - git+https://github.com/mlfoundations/open_clip.git@v2.20.0 -# there seems to be a memory leak (or maybe just memory not being freed fast enough) that is fixed by this version of malloc -# maybe move this up to the dependencies list. -RUN apt-get -y install libgoogle-perftools-dev && apt-get clean -ENV LD_PRELOAD=libtcmalloc.so - -COPY . /docker RUN \ # mv ${ROOT}/style.css ${ROOT}/user.css && \ @@ -67,9 +81,40 @@ RUN \ sed -i 's/in_app_dir = .*/in_app_dir = True/g' /opt/conda/lib/python3.10/site-packages/gradio/routes.py && \ git config --global --add safe.directory '*' +# drop permissions (if build targets non root) +USER $PUID:$PGID + + +COPY --from=download --chown=${PUID}:${PGID} /repositories/ ${ROOT}/repositories/ +RUN mkdir ${ROOT}/interrogate && cp ${ROOT}/repositories/clip-interrogator/clip_interrogator/data/* ${ROOT}/interrogate +RUN --mount=type=cache,target=/root/.cache/codeformer pip install -r ${ROOT}/repositories/CodeFormer/requirements.txt + +# Clone and copy huggingface_guess module +#RUN git clone https://github.com/lllyasviel/huggingface_guess.git /tmp/huggingface_guess && \ +# cp -r /tmp/huggingface_guess/huggingface_guess ${ROOT}/huggingface_guess + +# Ensure torchvision is correctly installed +RUN --mount=type=cache,target=/root/.cache/torch pip install torchvision==0.18.1 + +RUN --mount=type=cache,target=/root/.cache/repos \ + pip install pyngrok xformers==0.0.27 pytorch_lightning torchdiffeq torchsde \ + git+https://github.com/TencentARC/GFPGAN.git@8d2447a2d918f8eba5a4a01463fd48e45126a379 \ + git+https://github.com/openai/CLIP.git@d50d76daa670286dd6cacf3bcd80b5e4823fc8e1 \ + git+https://github.com/mlfoundations/open_clip.git@v2.20.0 +# there seems to be a memory leak (or maybe just memory not being freed fast enough) that is fixed by this version of malloc +# maybe move this up to the dependencies list. + +ENV LD_PRELOAD=libtcmalloc.so + +COPY . /docker + +RUN chown -R "$PUID:$PGID" "${ROOT}" +RUN chown -R "$PUID:$PGID" /docker + + WORKDIR ${ROOT} ENV NVIDIA_VISIBLE_DEVICES=all ENV CLI_ARGS="" EXPOSE 7860 ENTRYPOINT ["/docker/entrypoint.sh"] -CMD python -u webui.py --listen --port 7860 ${CLI_ARGS} \ No newline at end of file +CMD python -u webui.py --listen --port 7860 ${CLI_ARGS} diff --git a/services/forge/entrypoint.sh b/services/forge/entrypoint.sh index 6532393..110ed98 100755 --- a/services/forge/entrypoint.sh +++ b/services/forge/entrypoint.sh @@ -31,7 +31,7 @@ rsync -a --info=NAME ${ROOT}/models/karlo/ /data/models/karlo/ declare -A MOUNTS -MOUNTS["/root/.cache"]="/data/.cache" +MOUNTS["${USER_HOME}/.cache"]="/data/.cache" MOUNTS["${ROOT}/models"]="/data/models" MOUNTS["${ROOT}/embeddings"]="/data/embeddings" @@ -56,11 +56,12 @@ for to_path in "${!MOUNTS[@]}"; do echo Mounted $(basename "${from_path}") done -echo "Installing extension dependencies (if any)" - -# because we build our container as root: -chown -R root ~/.cache/ +chown -R $PUID:$PGID ~/.cache/ chmod 766 ~/.cache/ +chown -R $PUID:$PGID /output +chmod 766 /output + +echo "Installing extension dependencies (if any)" shopt -s nullglob # For install.py, please refer to https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Developing-extensions#installpy