51 lines
1.2 KiB
Docker
51 lines
1.2 KiB
Docker
# syntax=docker/dockerfile:1
|
|
|
|
FROM node:20-alpine AS web-builder
|
|
WORKDIR /src/Frontend
|
|
|
|
COPY Frontend/package.json Frontend/package-lock.json ./
|
|
RUN npm ci
|
|
|
|
COPY Frontend/ ./
|
|
|
|
ARG VITE_API_BASE=""
|
|
ARG VITE_KEYCLOAK_URL="https://auth.arrowstack.dev"
|
|
ARG VITE_KEYCLOAK_REALM="dev"
|
|
ARG VITE_KEYCLOAK_CLIENT_ID="learn-platform"
|
|
ENV VITE_API_BASE=${VITE_API_BASE} \
|
|
VITE_KEYCLOAK_URL=${VITE_KEYCLOAK_URL} \
|
|
VITE_KEYCLOAK_REALM=${VITE_KEYCLOAK_REALM} \
|
|
VITE_KEYCLOAK_CLIENT_ID=${VITE_KEYCLOAK_CLIENT_ID}
|
|
|
|
RUN npm run build
|
|
|
|
FROM golang:1.22-alpine AS api-builder
|
|
WORKDIR /src/Backend
|
|
|
|
COPY Backend/go.mod Backend/go.sum ./
|
|
RUN go mod download
|
|
|
|
COPY Backend/ ./
|
|
RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags="-s -w" -o /out/learn-platform ./cmd/api
|
|
|
|
FROM alpine:3.20
|
|
RUN apk add --no-cache ca-certificates \
|
|
&& addgroup -S app \
|
|
&& adduser -S app -G app
|
|
|
|
WORKDIR /app
|
|
COPY --from=api-builder /out/learn-platform /app/learn-platform
|
|
COPY --from=web-builder /src/Frontend/dist /app/web
|
|
|
|
ENV PORT=8080 \
|
|
WEB_DIR=/app/web \
|
|
AUTH_DISABLED=false
|
|
|
|
USER app
|
|
EXPOSE 8080
|
|
|
|
HEALTHCHECK --interval=15s --timeout=5s --start-period=20s --retries=5 \
|
|
CMD wget -q -O /dev/null http://127.0.0.1:8080/health || exit 1
|
|
|
|
ENTRYPOINT ["/app/learn-platform"]
|