|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| FROM --platform=$BUILDPLATFORM node:20-alpine AS frontend-builder
|
|
|
| WORKDIR /build
|
|
|
|
|
| RUN corepack enable && corepack prepare pnpm@latest --activate
|
|
|
|
|
| COPY frontend ./frontend
|
|
|
| WORKDIR /build/frontend
|
|
|
|
|
| RUN --mount=type=cache,target=/root/.local/share/pnpm/store \
|
| pnpm install --frozen-lockfile
|
|
|
|
|
| ENV NODE_OPTIONS="--max-old-space-size=4096"
|
| RUN pnpm build
|
|
|
|
|
|
|
|
|
| FROM alpine AS frontend-dist
|
| COPY --from=frontend-builder /build/frontend/dist /dist
|
|
|
|
|
|
|
|
|
| FROM golang:alpine AS backend-builder
|
|
|
| WORKDIR /build
|
|
|
|
|
| RUN apk add --no-cache git ca-certificates tzdata
|
|
|
|
|
| COPY go.mod go.sum ./
|
|
|
|
|
| RUN --mount=type=cache,target=/go/pkg/mod \
|
| --mount=type=cache,target=/root/.cache/go-build \
|
| GOTOOLCHAIN=auto go mod download
|
|
|
|
|
| COPY . .
|
|
|
|
|
| COPY --from=frontend-dist /dist /build/internal/server/static/dist
|
|
|
|
|
| ENV GO111MODULE=on \
|
| CGO_ENABLED=0 \
|
| GOOS=linux
|
|
|
|
|
| RUN --mount=type=cache,target=/go/pkg/mod \
|
| --mount=type=cache,target=/root/.cache/go-build \
|
| GOTOOLCHAIN=auto go build \
|
| -tags=nomsgpack \
|
| -ldflags "-s -w -X 'github.com/looplj/axonhub/internal/build.Version=$(cat internal/build/VERSION 2>/dev/null || echo dev)' -X 'github.com/looplj/axonhub/internal/build.BuildTime=$(date -u +%Y-%m-%dT%H:%M:%SZ)'" \
|
| -o axonhub \
|
| ./cmd/axonhub
|
|
|
|
|
|
|
|
|
| FROM alpine
|
|
|
|
|
| RUN apk add --no-cache ca-certificates tzdata
|
|
|
|
|
|
|
| RUN adduser -D -u 1000 user
|
|
|
|
|
| USER user
|
|
|
|
|
| WORKDIR /home/user/app
|
|
|
|
|
| COPY --from=backend-builder --chown=user:user /build/axonhub /home/user/app/axonhub
|
|
|
|
|
| RUN mkdir -p /home/user/app/data /home/user/app/logs
|
|
|
|
|
|
|
|
|
|
|
| ENV AXONHUB_SERVER_HOST=0.0.0.0
|
| ENV AXONHUB_SERVER_PORT=7860
|
| ENV AXONHUB_SERVER_DEBUG=false
|
|
|
|
|
|
|
| ENV AXONHUB_DB_DIALECT=postgres
|
| ENV AXONHUB_DB_DSN=""
|
|
|
|
|
| ENV AXONHUB_LOG_LEVEL=info
|
| ENV AXONHUB_LOG_ENCODING=json
|
|
|
|
|
| EXPOSE 7860
|
|
|
|
|
| ENTRYPOINT ["/home/user/app/axonhub"] |