Add GitHub Action for Docker images
Add a GitHub Action that builds a docker image on every push and tag, and publishes it to GitHub container repository, and -- if a docker username is defined in the repository secrets -- to the Docker Hub.
This commit is contained in:
parent
b62b606d30
commit
88d1879d59
|
@ -0,0 +1,98 @@
|
|||
name: Build and publish Docker images
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "**"
|
||||
tags:
|
||||
- "v*.*.*"
|
||||
pull_request:
|
||||
branches:
|
||||
- "main"
|
||||
|
||||
jobs:
|
||||
docker:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- id: cu118
|
||||
name: CUDA 11.8
|
||||
pytorch_install_args: "--index-url https://download.pytorch.org/whl/cu118"
|
||||
- id: cu121
|
||||
name: CUDA 12.1
|
||||
pytorch_install_args: "--index-url https://download.pytorch.org/whl/cu121"
|
||||
- id: rocm6.0
|
||||
name: ROCm 6.0
|
||||
pytorch_install_args: "--index-url https://download.pytorch.org/whl/rocm6.0"
|
||||
- id: cpu
|
||||
name: CPU only
|
||||
pytorch_install_args: "--index-url https://download.pytorch.org/whl/cpu"
|
||||
extra_args: --cpu
|
||||
|
||||
|
||||
name: ${{ matrix.name }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Check which repositories to use
|
||||
id: repositories
|
||||
run: |
|
||||
echo "GHCR_IMAGE_NAME=ghcr.io/${GITHUB_REPOSITORY_OWNER}/comfyui" >> "$GITHUB_ENV"
|
||||
if [[ -n "${DOCKERHUB_USERNAME}" ]]; then
|
||||
echo "DOCKERHUB_IMAGE_NAME=${DOCKERHUB_USERNAME}/comfyui" >> "$GITHUB_ENV"
|
||||
else
|
||||
echo "DOCKERHUB_IMAGE_NAME=" >> "$GITHUB_ENV"
|
||||
echo "No Docker Hub username set, only deploying to GitHub Container Repository"
|
||||
fi
|
||||
env:
|
||||
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
# list of Docker images to use as base name for tags
|
||||
images: |
|
||||
${{ env.DOCKERHUB_IMAGE_NAME }}
|
||||
${{ env.GHCR_IMAGE_NAME }}
|
||||
flavor: |
|
||||
suffix=-${{ matrix.id }},onlatest=true
|
||||
# generate Docker tags based on the following events/attributes
|
||||
tags: |
|
||||
type=ref,event=branch
|
||||
type=ref,event=pr
|
||||
type=semver,pattern={{version}}
|
||||
type=semver,pattern={{major}}.{{minor}}
|
||||
type=semver,pattern={{major}}
|
||||
type=sha
|
||||
# set latest tag for default branch
|
||||
type=raw,value=latest,enable={{is_default_branch}}
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
- name: Login to Docker Hub
|
||||
if: github.event_name != 'pull_request' && env.DOCKERHUB_IMAGE_NAME != ''
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
- name: Login to GHCR
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: .
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
build-args: |
|
||||
PYTORCH_INSTALL_ARGS=${{ matrix.pytorch_install_args }}
|
||||
EXTRA_ARGS=${{ matrix.extra_args }}
|
||||
cache-from: type=gha,scope=${{ github.ref_name }}-${{ matrix.id }}
|
||||
cache-to: type=gha,mode=max,scope=${{ github.ref_name }}-${{ matrix.id }}
|
|
@ -61,6 +61,7 @@ COPY --chown=${USER_UID}:${USER_GID} . .
|
|||
# default environment variables
|
||||
ENV COMFYUI_ADDRESS=0.0.0.0
|
||||
ENV COMFYUI_PORT=8188
|
||||
ENV COMFYUI_EXTRA_BUILD_ARGS="${EXTRA_ARGS}"
|
||||
ENV COMFYUI_EXTRA_ARGS=""
|
||||
# default start command
|
||||
CMD \
|
||||
|
@ -68,4 +69,4 @@ CMD \
|
|||
rsync -aP "${VIRTUAL_ENV}/" "${VIRTUAL_ENV_CUSTOM}/" ;\
|
||||
sed -i "s!${VIRTUAL_ENV}!${VIRTUAL_ENV_CUSTOM}!g" "${VIRTUAL_ENV_CUSTOM}/pyvenv.cfg" ;\
|
||||
fi ;\
|
||||
python -u main.py --listen ${COMFYUI_ADDRESS} --port ${COMFYUI_PORT} ${EXTRA_ARGS} ${COMFYUI_EXTRA_ARGS}
|
||||
python -u main.py --listen ${COMFYUI_ADDRESS} --port ${COMFYUI_PORT} ${COMFYUI_EXTRA_BUILD_ARGS} ${COMFYUI_EXTRA_ARGS}
|
||||
|
|
16
README.md
16
README.md
|
@ -136,6 +136,22 @@ After this you should have everything installed and can proceed to running Comfy
|
|||
|
||||
## Docker
|
||||
|
||||
There are prebuilt docker images for AMD and NVIDIA GPUs on [GitHub Packages](https://ghcr.io/comfyanonymous/comfyui).
|
||||
|
||||
You can pull them to your local docker registry with:
|
||||
|
||||
```shell
|
||||
# For NVIDIA GPUs
|
||||
docker pull ghcr.io/comfyanonymous/comfyui:latest-cu121
|
||||
# For AMD GPUs
|
||||
docker pull ghcr.io/comfyanonymous/comfyui:latest-rocm6.0
|
||||
|
||||
# For CPU only
|
||||
docker pull ghcr.io/comfyanonymous/comfyui:latest-cpu
|
||||
```
|
||||
|
||||
### Building images manually
|
||||
|
||||
You can build a docker image with the Dockerfile in this repo.
|
||||
|
||||
Specify PYTORCH_INSTALL_ARGS build arg with one of the PyTorch commands above to build for AMD or NVIDIA GPUs.
|
||||
|
|
Loading…
Reference in New Issue