From 00a5a680cf896adb3173709b01cdbd9d53cfae47 Mon Sep 17 00:00:00 2001 From: Carson Yang Date: Mon, 4 Dec 2023 12:22:57 +0800 Subject: [PATCH] Add workflow for building oci image Signed-off-by: Carson Yang --- .github/workflows/docker.yml | 52 ++++++++++++++++++++++++++++++++++++ Dockerfile | 17 ++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 .github/workflows/docker.yml create mode 100644 Dockerfile diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 0000000..c036bc0 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,52 @@ +name: Build and push inpaint-web Docker image + +on: + workflow_dispatch: + push: + branches: ["main"] + +jobs: + build-docs-image: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + # list of Docker images to use as base name for tags + images: | + ${{ secrets.DOCKER_USERNAME }}/inpaint-web + ghcr.io/${{ github.repository_owner }}/inpaint-web + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to DockerHub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Login to ghcr.io + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GH_PAT }} + + - name: Build and push Docker images to ghcr.io and Docker Hub + uses: docker/build-push-action@v5 + with: + context: . + platforms: linux/amd64, linux/arm64 + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7ae7d71 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +FROM node:18 as builder + +WORKDIR /usr/src/app + +# Copy the package.json and package-lock.json files over +# We do this FIRST so that we don't copy the huge node_modules folder over from our local machine +# The node_modules can contain machine-specific libraries, so it should be created by the machine that's actually running the code +COPY . ./ + +# Now we run NPM install, which includes dev dependencies +RUN npm install + +FROM alpine:latest as production +RUN apk --no-cache add nodejs ca-certificates +WORKDIR /root/ +COPY --from=builder /usr/src/app ./ +CMD [ "node", "node_modules/vite/bin/vite.js", "--host" ] \ No newline at end of file