28 lines
675 B
Docker
28 lines
675 B
Docker
# builder 阶段始终运行在构建机原生平台(amd64),用 Go 交叉编译目标平台二进制
|
||
FROM --platform=$BUILDPLATFORM golang:1.21-alpine AS builder
|
||
|
||
ARG TARGETOS
|
||
ARG TARGETARCH
|
||
|
||
WORKDIR /app
|
||
COPY go.mod go.sum ./
|
||
RUN --mount=type=cache,target=/go/pkg/mod \
|
||
go mod download
|
||
|
||
COPY . .
|
||
RUN --mount=type=cache,target=/go/pkg/mod \
|
||
--mount=type=cache,target=/root/.cache/go-build \
|
||
CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o kiro-go .
|
||
|
||
FROM alpine:latest
|
||
RUN apk --no-cache add ca-certificates
|
||
|
||
WORKDIR /app
|
||
COPY --from=builder /app/kiro-go .
|
||
COPY --from=builder /app/web ./web
|
||
|
||
EXPOSE 8080
|
||
VOLUME /app/data
|
||
|
||
CMD ["./kiro-go"]
|