From 9e0f84819a3d989adc2009658679f0df77a0fdc7 Mon Sep 17 00:00:00 2001 From: ngfchl Date: Fri, 19 Jun 2026 16:22:57 +0800 Subject: [PATCH] docker: add server Dockerfile with multi-stage build --- .dockerignore | 16 ++++++++++++++++ Dockerfile | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..529b055 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,16 @@ +.git +.gitignore +.idea +.vscode +dist +data +client +server +*.exe +*.test +*.out +*.zip +Makefile +package.bat +LICENSE +README.md diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8b5ddf4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,33 @@ +FROM golang:1.26-alpine AS build + +RUN apk add --no-cache git + +WORKDIR /src +COPY go.mod go.sum ./ +RUN go mod download + +COPY . . + +ARG VERSION=1.0.0 +ARG BUILD_TIME + +RUN CGO_ENABLED=0 GOOS=linux go build \ + -ldflags "-s -w -X 'main.Version=${VERSION}' -X 'main.BuildTime=${BUILD_TIME}'" \ + -o /out/monitor-server ./cmd/server + +# ── Runtime ── +FROM alpine:3.20 + +RUN apk add --no-cache ca-certificates tzdata + +WORKDIR /app +COPY --from=build /out/monitor-server . +COPY server.yaml . + +RUN mkdir -p data + +EXPOSE 8080 + +VOLUME ["/app/data"] + +ENTRYPOINT ["./monitor-server"]