# Step 1: Build Frontend FROM oven/bun:1 AS frontend-builder WORKDIR /app/frontend COPY frontend/package.json frontend/bun.lock ./ RUN bun install --frozen-lockfile COPY frontend/ ./ RUN bun run build # Stage 2: Build Backend FROM golang:1.25-alpine AS backend-builder WORKDIR /app RUN apk add --no-cache git COPY backend/go.mod backend/go.sum ./ RUN go mod download COPY backend/ ./ COPY --from=frontend-builder /app/frontend/public/ ./web/static/ RUN go build -ldflags="-w -s" -o aethera ./cmd # Stage 3: Minimal Runtime FROM alpine:3.21 RUN apk add --no-cache ca-certificates WORKDIR /app COPY --from=backend-builder /app/aethera . RUN mkdir -p /app/data EXPOSE 8080 ENV AETHERA_LISTEN=0.0.0.0 ENV AETHERA_PORT=8080 ENV AETHERA_DATA_DIR=/app/data ENTRYPOINT ["./aethera"]