Add Dockerfile + CI/CD pipeline
Some checks failed
Docker Build & Push / build (push) Failing after 1s
LogMaster CI/CD / build-and-test (push) Has been cancelled
LogMaster CI/CD / docker (push) Has been cancelled

This commit is contained in:
root
2026-05-24 13:48:56 +02:00
parent 378b30cdc8
commit 4abc199869
2 changed files with 59 additions and 30 deletions

View File

@@ -0,0 +1,27 @@
name: Docker Build & Push
on:
push:
branches: [main]
tags:
- 'v*'
jobs:
build:
runs-on: linux
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Docker Login
run: |
echo "${{ secrets.GITEATOKEN }}" | docker login git.kgessner.de --username keviin --password-stdin
- name: Build Image
run: |
docker build -t git.kgessner.de/keviin/logmaster:latest .
docker tag git.kgessner.de/keviin/logmaster:latest git.kgessner.de/keviin/logmaster:${GITHUB_SHA::8}
- name: Push Image
run: |
docker push git.kgessner.de/keviin/logmaster:latest
docker push git.kgessner.de/keviin/logmaster:${GITHUB_SHA::8}

View File

@@ -1,38 +1,40 @@
FROM node:20-alpine
# ── Build-Stage: TypeScript kompilieren ───────────────────────────
FROM node:20-alpine AS builder
WORKDIR /app
# Install compression tools for bz2, xz, zstd support
RUN apk add --no-cache bzip2 xz zstd
# Copy package files and install deps
COPY package.json package-lock.json* ./
RUN npm ci --omit=dev 2>/dev/null || npm install --omit=dev
# Copy TypeScript config and source
COPY package*.json ./
RUN npm ci --omit=dev && npm ci
COPY tsconfig.server.json ./
COPY src/server/ ./src/server/
RUN npx tsc -p tsconfig.server.json
# ── Production-Stage: Nur das Nötigste ─────────────────────────────
FROM node:20-alpine
WORKDIR /app
# Runtime-User (nicht root)
RUN addgroup -S logviewer && adduser -S logviewer -G logviewer
# Nur production dependencies
COPY package*.json ./
RUN npm ci --omit=dev && npm cache clean --force
# Kompilierte Server-Dateien
COPY --from=builder /app/dist-server/ ./dist-server/
# Web-UI (statische Assets)
COPY src/web/ ./src/web/
# Install typescript for build, compile, then remove
RUN npm install typescript@5.7.2 && \
npx tsc -p tsconfig.server.json && \
npm uninstall typescript
# Copy sample logs
COPY sample-logs/ ./sample-logs/
# Generate sample logs
RUN node sample-logs/generate-logs.js
# Environment defaults
ENV LOG_SOURCES=/app/sample-logs/app.log,/app/sample-logs/nginx-access.log,/app/sample-logs/syslog,/app/sample-logs/archived.log.gz
ENV LOG_THEME=dark
ENV LOG_REFRESH_INTERVAL=3000
ENV LOG_TAIL_MODE=true
ENV PORT=8080
ENV HOST=0.0.0.0
# Persistenz-Volume
RUN mkdir -p /app/collector-data /app/monitor-data && \
chown -R logviewer:logviewer /app
# Default-CMD (beide Modi aktiv)
EXPOSE 8080
ENV HOST=0.0.0.0 PORT=8080 LOG_MODE=both
USER logviewer
CMD ["node", "dist-server/server.js"]
# Mögliche Overrides:
# Collector: -e LOG_MODE=collector -e COLLECTOR_UDP_PORT=5140
# Viewer: -e LOG_MODE=viewer -p 9090:9090
# Monitor: -e LOG_MODE=monitor -e MONITOR_RULES='[...]'