Add Docker CI/CD

This commit is contained in:
2025-07-15 11:04:32 +02:00
parent 79814b18b1
commit 55622d7a4d
2 changed files with 68 additions and 0 deletions

View File

@@ -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

29
Dockerfile Normal file
View File

@@ -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"]