4 Commits

Author SHA1 Message Date
tueem cc3996b384 fix(docker): add ca-certificates to docker
build / Go-Build (push) Successful in 1m25s
docker / docker (push) Successful in 4m9s
2026-06-24 14:48:11 +02:00
tueem 1b946789a4 feat(docker): add compose 2026-06-24 14:45:42 +02:00
tueem fbe10a0288 feat(docker): adjust entrypoint.sh for new imprinturl flag
docker / docker (push) Successful in 4m48s
build / Go-Build (push) Failing after 51s
2026-06-24 12:12:51 +02:00
tueem bfafd63b33 feat(ci): add frontend build stage 2026-06-24 12:12:38 +02:00
4 changed files with 106 additions and 0 deletions
+15
View File
@@ -28,6 +28,21 @@ jobs:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v5 uses: actions/checkout@v5
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 26
cache: 'npm'
cache-dependency-path: ./frontend/package-lock.json
- name: Install Dependencies
working-directory: ./frontend
run: npm ci
- name: Run Vite Build
working-directory: ./frontend
run: npm run build
- name: Set up Go - name: Set up Go
uses: actions/setup-go@v6 uses: actions/setup-go@v6
with: with:
+10
View File
@@ -1,15 +1,25 @@
# Frontend build stage
FROM node:22-alpine AS frontend-builder
WORKDIR /app
COPY frontend/package*.json ./
RUN npm ci
COPY frontend/ .
RUN npm run build
# Build stage # Build stage
FROM golang:latest AS builder FROM golang:latest AS builder
WORKDIR /app WORKDIR /app
COPY go.mod go.sum ./ COPY go.mod go.sum ./
RUN go mod download RUN go mod download
COPY . . COPY . .
COPY --from=frontend-builder /app/dist ./frontend/dist
RUN CGO_ENABLED=0 GOOS=linux go build -v -o outfit-voting-abi26 ./cmd/ RUN CGO_ENABLED=0 GOOS=linux go build -v -o outfit-voting-abi26 ./cmd/
# Final stage # Final stage
FROM debian:bookworm-slim FROM debian:bookworm-slim
WORKDIR /root/ WORKDIR /root/
EXPOSE 4000 EXPOSE 4000
RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*
COPY --from=builder /app/outfit-voting-abi26 /usr/local/bin/outfit-voting-abi26 COPY --from=builder /app/outfit-voting-abi26 /usr/local/bin/outfit-voting-abi26
COPY entrypoint.sh /entrypoint.sh COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh RUN chmod +x /entrypoint.sh
+77
View File
@@ -0,0 +1,77 @@
services:
outfit-voting-abi26:
image: tueem/outfit-voting-abi26:latest
restart: unless-stopped
environment:
DB_HOST: "HOST"
DB_PORT: "PORT"
DB_NAME: "NAME"
DB_USER: "USER"
DB_PASS: "PASS"
OIDC_ISSUER: "OIDC_ISSUER"
OIDC_CLIENTID: "OIDC_CLIENTID"
OIDC_SECRET: "OIDC_SECRET"
OIDC_REDIRECT: "OIDC_REDIRECT"
SIGNINGKEY: "SIGNINGKEY"
IMPRINTURL: "IMPRINTURL"
networks:
- web-network
- backend
depends_on:
postgres:
condition: service_healthy
labels:
- "traefik.enable=true"
- "traefik.http.routers.myapp.rule=Host(`example.com`)"
- "traefik.http.routers.myapp.entrypoints=websecure"
- "traefik.http.routers.myapp.tls=true"
- "traefik.http.routers.myapp.tls.certresolver=letsencrypt"
- "traefik.http.services.myapp.loadbalancer.server.port=4000"
postgres:
image: postgres:latest
restart: unless-stopped
shm_size: 128mb
environment:
POSTGRES_PASSWORD: "PASS"
volumes:
- db:/var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U myuser -d mydatabase"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
networks:
- backend
traefik:
image: traefik:v3.1
restart: unless-stopped
security_opt:
- no-new-privileges:true
ports:
- "80:80" # HTTP port
- "443:443" # HTTPS port
command:
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
- "--entrypoints.web.http.redirections.entryPoint.scheme=https"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
- "--certificatesresolvers.letsencrypt.acme.email=your-email@example.com"
- "--certificatesresolvers.letsencrypt.acme.storage=/etc/traefik/acme/acme.json"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik-ssl:/etc/traefik/acme
networks:
- web-network
networks:
web-network:
backend:
volumes:
db:
+4
View File
@@ -42,4 +42,8 @@ if [ -n "$SIGNINGKEY" ]; then
CMD="$CMD --signingKey $SIGNINGKEY" CMD="$CMD --signingKey $SIGNINGKEY"
fi fi
if [ -n "$IMPRINTURL" ]; then
CMD="$CMD --imprinturl $IMPRINTURL"
fi
eval exec $CMD "$@" eval exec $CMD "$@"