modelRT/deploy/dockerfile/modelrt.Dockerfile

35 lines
1.0 KiB
Docker
Raw Normal View History

FROM golang:1.26-alpine AS builder
RUN apk --no-cache upgrade
2025-12-12 11:01:18 +08:00
WORKDIR /app
COPY go.mod go.sum ./
2025-12-12 11:01:18 +08:00
RUN GOPROXY="https://goproxy.cn,direct" go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build \
-ldflags="-s -w" \
-trimpath \
-mod=readonly \
-o modelrt main.go
2025-12-12 11:01:18 +08:00
# prepare runtime dependencies in a pinned alpine stage so they can be
# copied into scratch without pulling any vulnerable os packages at run time.
FROM alpine:3.21 AS certs
ARG USER_ID=1000
RUN apk --no-cache add ca-certificates tzdata && \
adduser -D -u ${USER_ID} modelrt
FROM scratch
# CA certificates required for TLS connections (RabbitMQ amqps://)
COPY --from=certs /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
# timezone data
COPY --from=certs /usr/share/zoneinfo /usr/share/zoneinfo
# non-root user/group definitions
COPY --from=certs /etc/passwd /etc/passwd
COPY --from=certs /etc/group /etc/group
WORKDIR /app
2025-12-12 11:01:18 +08:00
COPY --from=builder /app/modelrt ./modelrt
USER modelrt
CMD ["/app/modelrt", "-modelRT_config_dir=/app/configs"]