# Build context: server/ # Example: # docker build -f Dockerfile -t iotlcm-app-server:latest . FROM crpi-svwhn8x8nvask31h.cn-beijing.personal.cr.aliyuncs.com/xjzlpublic/golangalpine:1.25.7-alpine3.23 AS builder ENV GIT_TERMINAL_PROMPT=0 ENV GOPRIVATE=git.xiujie.cn ENV GOPROXY=https://goproxy.cn,direct ENV TZ=Asia/Shanghai WORKDIR /src/server COPY go.mod go.sum ./ RUN go mod download COPY . ./ ARG BuildVersion=0.0.0 ARG BuildTime= ARG CommitID= RUN go build -v -o /out/iotlcm-app-server \ -ldflags "-X main.BuildVersion=${BuildVersion} -X main.CommitID=${CommitID} -X main.BuildTime=${BuildTime}" \ . FROM crpi-svwhn8x8nvask31h.cn-beijing.personal.cr.aliyuncs.com/xjzlpublic/alpine AS runtime ENV TZ=Asia/Shanghai ENV APP_UPLOAD_DIR=/data/app/iotlcmadmin-web-svc/upload WORKDIR /app COPY --from=builder /usr/share/zoneinfo/Asia/Shanghai /usr/share/zoneinfo/Asia/Shanghai COPY --from=builder /out/iotlcm-app-server /app/iotlcm-app-server COPY resource/public /app/resource/public # The environment-specific config is mounted read-only by Docker Compose at runtime. RUN mkdir -p "${APP_UPLOAD_DIR}" /app/config /app/resource/log/server /app/resource/log/server/sql /app/resource/cache /app/resource/certs EXPOSE 8010 VOLUME ["/data/app/iotlcmadmin-web-svc/upload", "/app/resource/certs"] CMD ["./iotlcm-app-server"]