diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml new file mode 100644 index 0000000..4522000 --- /dev/null +++ b/.gitea/workflows/release.yml @@ -0,0 +1,39 @@ +name: Create and Push Release +on: + workflow_dispatch: + +env: + AUTHENTIK_URL: https://auth.smoothbrain.win + REGISTRY_URL: gitea.smoothbrain.win + IMAGE_OWNER: rak + IMAGE_NAME: dex-ui-vue + +jobs: + + release: + runs-on: ubuntu-latest + steps: + - name: Get version + id: get-version + run: | + version=$(cat package.json | jq -r '.version') + echo "version=$version" >> $GITHUB_OUTPUT + + - name: Docker Login to Gitea Registry + uses: docker/login-action@v2 + with: + registry: ${{ env.REGISTRY_URL }} + username: ${{ secrets.CI_SERVICE_ACCOUNT }} + password: ${{ secrets.CI_SERVICE_ACCOUNT_PASSWORD }} + + - name: Checkout + uses: actions/checkout@v4 + + - name: Build & Push Image + env: + TAG: ${{ steps.get-version.outputs.version }} + QUARKUS_CONTAINER_IMAGE_USERNAME: ${{ secrets.CI_SERVICE_ACCOUNT }} + QUARKUS_CONTAINER_IMAGE_PASSWORD: ${{ secrets.CI_SERVICE_ACCOUNT_PASSWORD }} + run: | + docker build -t $REGISTRY_URL/$IMAGE_OWNER/$IMAGE_IMAGE:$TAG . + docker push $REGISTRY_URL/$IMAGE_OWNER/$IMAGE_IMAGE:$TAG \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..48f210a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,29 @@ +# Stage 1: Build application +FROM node:22-bookworm-slim AS builder + +WORKDIR /app +COPY package*.json ./ +RUN npm ci --omit=dev +COPY . . +RUN npm run build + +# Stage 2: Prepare static web server +FROM alpine:3.19 AS server-prep +RUN wget -O /tmp/sws.tar.gz \ + https://github.com/static-web-server/static-web-server/releases/download/v2.17.0/static-web-server-v2.17.0-x86_64-unknown-linux-musl.tar.gz +RUN tar -xzf /tmp/sws.tar.gz -C /tmp \ + --strip-components=1 + +# Stage 3: Create runtime image +FROM gcr.io/distroless/static-debian12:nonroot + +COPY --from=builder --chown=nonroot:nonroot /app/dist /app + +COPY --from=server-prep --chown=nonroot:nonroot /tmp/static-web-server /usr/local/bin/ + +USER nonroot +WORKDIR /app +EXPOSE 8080 + +ENTRYPOINT ["/usr/local/bin/static-web-server"] +CMD ["--port", "8080", "--root", "/app", "--log-level", "warn"] \ No newline at end of file