Files
Atlas/Dockerfile
T
2026-06-29 11:16:11 +00:00

47 lines
1015 B
Docker

# syntax=docker/dockerfile:1
ARG IMAGE_PREFIX=
FROM ${IMAGE_PREFIX}node:20-alpine AS web-builder
WORKDIR /src/web
COPY web/package.json web/package-lock.json web/.npmrc ./
RUN npm install
COPY web/ ./
RUN npm run build
FROM ${IMAGE_PREFIX}golang:1.25-alpine AS go-builder
ARG TARGETARCH=amd64
ARG GOPROXY=https://goproxy.cn,direct
ARG GOSUMDB=sum.golang.google.cn
ENV CGO_ENABLED=0 GOPROXY=${GOPROXY} GOSUMDB=${GOSUMDB}
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY cmd/ ./cmd/
COPY internal/ ./internal/
COPY --from=web-builder /src/web/dist ./internal/api/static/
RUN GOOS=linux GOARCH="$TARGETARCH" \
go build -trimpath -ldflags="-w -s" -o /app ./cmd/app
FROM ${IMAGE_PREFIX}alpine:3.20
RUN apk add --no-cache ca-certificates tzdata tini
ENV APP_DATA=/data \
APP_ADDR=:8080
COPY --from=go-builder /app /usr/local/bin/app
RUN adduser -D -H app
USER app
VOLUME ["/data"]
EXPOSE 8080
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["/usr/local/bin/app", "-data", "/data", "-addr", ":8080"]