Add Docker CI/CD
This commit is contained in:
39
.gitea/workflows/release.yml
Normal file
39
.gitea/workflows/release.yml
Normal 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
29
Dockerfile
Normal 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"]
|
||||||
Reference in New Issue
Block a user