Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make Dockerfile cloud ready (tested on runpod) #1950

Merged
merged 5 commits into from
Dec 12, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 49 additions & 14 deletions .github/workflows/build-container.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
# Building the Image without pushing to confirm it is still buildable
# confirum functionality would unfortunately need way more resources
name: build container image
on:
push:
Expand All @@ -11,28 +9,65 @@ jobs:
strategy:
fail-fast: false
matrix:
pip-requirements:
- requirements-lin-amd.txt
- requirements-lin-cuda.txt
registry:
- ghcr.io
flavor:
- amd
- cuda
# - cloud
include:
- flavor: amd
pip-requirements: requirements-lin-amd.txt
dockerfile: docker-build/Dockerfile
platforms: linux/amd64,linux/arm64
- flavor: cuda
pip-requirements: requirements-lin-cuda.txt
dockerfile: docker-build/Dockerfile
platforms: linux/amd64,linux/arm64
# - flavor: cloud
# pip-requirements: requirements-lin-cuda.txt
# dockerfile: docker-build/Dockerfile.cloud
# platforms: linux/amd64
runs-on: ubuntu-latest
name: ${{ matrix.pip-requirements }} ${{ matrix.arch }}
name: ${{ matrix.flavor }}
steps:
- name: prepare docker-tag
env:
repository: ${{ github.repository }}
run: echo "dockertag=${repository,,}" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@v3

- name: Set up QEMU
uses: docker/setup-qemu-action@v2

- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
images: ${{ matrix.registry }}/${{ github.repository }}-${{ matrix.flavor }}
tags: |
type=ref,event=branch
type=ref,event=tag
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=sha
flavor: |
latest=true

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- if: github.event_name != 'pull_request'
name: Docker login
uses: docker/login-action@v2
with:
registry: ${{ matrix.registry }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build container
uses: docker/build-push-action@v3
with:
context: .
file: docker-build/Dockerfile
platforms: linux/amd64,linux/arm64
push: false
tags: ${{ env.dockertag }}:${{ matrix.pip-requirements }}
file: ${{ matrix.dockerfile }}
platforms: ${{ matrix.platforms }}
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
build-args: pip_requirements=${{ matrix.pip-requirements }}
2 changes: 2 additions & 0 deletions docker-build/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ COPY . ./environments-and-requirements/${PIP_REQUIREMENTS} ./
RUN python3 -m venv .venv \
&& pip install \
--no-cache-dir \
wheel \
-r ${PIP_REQUIREMENTS}

FROM python:3.10-slim AS runtime
Expand All @@ -42,6 +43,7 @@ COPY --from=builder /usr/src/app .

# set Environment, Entrypoint and default CMD
ENV INVOKEAI_ROOT /data
ENV INVOKE_MODEL_RECONFIGURE --yes
ENV PATH=/usr/src/app/.venv/bin:$PATH

ENTRYPOINT [ "python3", "scripts/invoke.py" ]
Expand Down
1 change: 1 addition & 0 deletions docker-build/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,5 @@ docker run \
--hostname="$project_name" \
--mount="source=$volumename,target=/data" \
--publish=9090:9090 \
--cap-add=sys_nice \
"$invokeai_tag" ${1:+$@}
6 changes: 5 additions & 1 deletion ldm/invoke/CLI.py
Original file line number Diff line number Diff line change
Expand Up @@ -941,7 +941,11 @@ def emergency_model_reconfigure():
print('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
print('configure_invokeai is launching....\n')

sys.argv = ['configure_invokeai','--interactive']
sys.argv = [
'configure_invokeai',
os.environ.get(
'INVOKE_MODEL_RECONFIGURE',
'--interactive')]
import configure_invokeai
configure_invokeai.main()