(READ ONLY) Margin is an open annotation layer for the internet. Powered by the AT Protocol.
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748FROM oven/bun:1 AS frontend-builder
WORKDIR /app/webCOPY web/package.json web/bun.lock ./RUN bun installCOPY web/ ./RUN bun run build
FROM golang:1.25-alpine AS backend-builder
RUN apk add --no-cache gcc musl-dev
WORKDIR /appCOPY backend/go.mod backend/go.sum ./RUN go mod download
COPY backend/ ./RUN CGO_ENABLED=1 GOOS=linux go build -a -ldflags '-linkmode external -extldflags "-static"' -o margin-server ./cmd/server
FROM node:20-alpine
RUN apk add --no-cache ca-certificates tzdata
WORKDIR /app
COPY --from=backend-builder /app/margin-server ./margin-server
COPY --from=frontend-builder /app/web/dist ./distCOPY --from=frontend-builder /app/web/node_modules ./node_modules
ENV PORT=8080ENV API_PORT=8081ENV DATABASE_URL=margin.dbENV HOST=0.0.0.0ENV API_URL=http://localhost:8081
EXPOSE 8080
COPY <<'EOF' /app/start.sh#!/bin/shPORT=$API_PORT ./margin-server &node ./dist/server/entry.mjs &wait -nEOFRUN chmod +x /app/start.sh
CMD ["/app/start.sh"]