Add Dockerfile, docker-compose and Makefile for container build

This commit is contained in:
2026-08-13 08:44:23 +02:00
parent bd13ad67cc
commit 96d6917b0b
4 changed files with 87 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
# ── Build stage ─────────────────────────────────────────────────────────────
FROM docker.io/library/node:22-alpine AS build
WORKDIR /app
COPY web/package.json web/package-lock.json ./
RUN npm ci
COPY web/ ./
RUN npm run build
# ── Runtime stage ───────────────────────────────────────────────────────────
FROM docker.io/library/nginx:1.27-alpine
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=build /app/dist /usr/share/nginx/html
EXPOSE 80
HEALTHCHECK --interval=30s --timeout=5s --retries=3 \
CMD wget -qO- http://localhost/ >/dev/null || exit 1
+35
View File
@@ -0,0 +1,35 @@
# ── Wackelpeter container build/deploy ──────────────────────────────────────
# Uses Podman (docker-compose optional). Targets:
# make build Build image
# make push Push image to Gitea registry
# make up/down Start/stop via docker-compose
# make run Start via podman directly
# make clean Remove local image
REGISTRY ?= gitea.korbel.network
IMAGE ?= $(REGISTRY)/nico/wackelpeter
TAG ?= latest
COMPOSE ?= docker-compose
.PHONY: build push up down run clean login
build:
podman build -t $(IMAGE):$(TAG) .
push: build
podman push $(IMAGE):$(TAG)
up: build
$(COMPOSE) up -d
down:
$(COMPOSE) down
run: build
podman run --rm -d --name wackelpeter -p 8080:80 $(IMAGE):$(TAG)
clean:
podman rmi $(IMAGE):$(TAG) || true
login:
podman login $(REGISTRY)
+9
View File
@@ -0,0 +1,9 @@
services:
wackelpeter:
image: gitea.korbel.network/nico/wackelpeter:latest
build:
context: .
container_name: wackelpeter
ports:
- "8080:80"
restart: unless-stopped
+22
View File
@@ -0,0 +1,22 @@
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;
# gzip
gzip on;
gzip_types text/css application/javascript application/json image/svg+xml;
# GLB models and assets
location ~* \.(glb|gltf|ogg|png|jpg|json)$ {
expires 7d;
add_header Cache-Control "public";
}
# SPA fallback
location / {
try_files $uri $uri/ /index.html;
}
}