mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
0439b51a26
* partially working simple installer * works on linux * fix linux requirements files * read root environment variable in right place * fix cat invokeai.init in test workflows * fix classical cp error in test-invoke-pip.yml * respect --root argument now * untested bat installers added * windows install.bat now working fix logic to find frontend files * rename simple_install to "installer" 1. simple_install => 'installer' 2. source and binary install directories are removed * enable update scripts to update requirements - Also pin requirements to known working commits. - This may be a breaking change; exercise with caution - No functional testing performed yet! * update docs and installation requirements NOTE: This may be a breaking commit! Due to the way the installer works, I have to push to a public branch in order to do full end-to-end testing. - Updated installation docs, removing binary and source installers and substituting the "simple" unified installer. - Pin requirements for the "http:" downloads to known working commits. - Removed as much as possible the invoke-ai forks of others' repos. * fix directory path for installer * correct requirement/environment errors * exclude zip files in .gitignore * possible fix for dockerbuild * ready for torture testing - final Windows bat file tweaks - copy environments-and-requirements to the runtime directory so that the `update.sh` script can run. This is not ideal, since we lose control over the requirements. Better for the update script to pull the proper updated requirements script from the repository. * allow update.sh/update.bat to install arbitrary InvokeAI versions - Can pass the zip file path to any InvokeAI release, branch, commit or tag, and the installer will try to install it. - Updated documentation - Added Linux Python install hints. * use binary installer's :err_exit function * user diffusers 0.10.0 * added logic for CPPFLAGS on mac * improve windows install documentation - added information on a couple of gotchas I experienced during windows installation, including DLL loading errors experienced when Visual Studio C++ Redistributable was not present. * tagged to pull from 2.2.4-rc1 - also fix error of shell window closing immediately if suitable python not found Co-authored-by: mauwii <Mauwii@outlook.de>
87 lines
2.5 KiB
Docker
87 lines
2.5 KiB
Docker
#######################
|
|
#### Builder stage ####
|
|
|
|
FROM library/ubuntu:22.04 AS builder
|
|
|
|
ARG DEBIAN_FRONTEND=noninteractive
|
|
RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
|
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
|
apt update && apt-get install -y \
|
|
git \
|
|
libglib2.0-0 \
|
|
libgl1-mesa-glx \
|
|
python3-venv \
|
|
python3-pip \
|
|
build-essential \
|
|
python3-opencv \
|
|
libopencv-dev
|
|
|
|
# This is needed for patchmatch support
|
|
RUN cd /usr/lib/x86_64-linux-gnu/pkgconfig/ &&\
|
|
ln -sf opencv4.pc opencv.pc
|
|
|
|
ARG WORKDIR=/invokeai
|
|
WORKDIR ${WORKDIR}
|
|
|
|
ENV VIRTUAL_ENV=${WORKDIR}/.venv
|
|
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
|
|
|
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
|
python3 -m venv ${VIRTUAL_ENV} &&\
|
|
pip install --extra-index-url https://download.pytorch.org/whl/cu116 \
|
|
torch==1.12.0+cu116 \
|
|
torchvision==0.13.0+cu116 &&\
|
|
pip install -e git+https://github.com/invoke-ai/PyPatchMatch@0.1.3#egg=pypatchmatch
|
|
|
|
COPY . .
|
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
|
cp environments-and-requirements/requirements-lin-cuda.txt requirements.txt && \
|
|
pip install -r requirements.txt &&\
|
|
pip install -e .
|
|
|
|
|
|
#######################
|
|
#### Runtime stage ####
|
|
|
|
FROM library/ubuntu:22.04 as runtime
|
|
|
|
ARG DEBIAN_FRONTEND=noninteractive
|
|
ENV PYTHONUNBUFFERED=1
|
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
|
apt update && apt install -y --no-install-recommends \
|
|
git \
|
|
curl \
|
|
ncdu \
|
|
iotop \
|
|
bzip2 \
|
|
libglib2.0-0 \
|
|
libgl1-mesa-glx \
|
|
python3-venv \
|
|
python3-pip \
|
|
build-essential \
|
|
python3-opencv \
|
|
libopencv-dev &&\
|
|
apt-get clean && apt-get autoclean
|
|
|
|
ARG WORKDIR=/invokeai
|
|
WORKDIR ${WORKDIR}
|
|
|
|
ENV INVOKEAI_ROOT=/mnt/invokeai
|
|
ENV VIRTUAL_ENV=${WORKDIR}/.venv
|
|
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
|
|
|
|
COPY --from=builder ${WORKDIR} ${WORKDIR}
|
|
COPY --from=builder /usr/lib/x86_64-linux-gnu/pkgconfig /usr/lib/x86_64-linux-gnu/pkgconfig
|
|
|
|
# build patchmatch
|
|
RUN python -c "from patchmatch import patch_match"
|
|
|
|
## workaround for non-existent initfile when runtime directory is mounted; see #1613
|
|
RUN touch /root/.invokeai
|
|
|
|
ENTRYPOINT ["bash"]
|
|
|
|
CMD ["-c", "python3 scripts/invoke.py --web --host 0.0.0.0"]
|