refactor(deploy): 简化Docker部署配置和构建流程
移除多阶段构建和交叉编译配置,改为直接运行go程序 合并多个挂载卷为单个/app目录挂载
This commit is contained in:
parent
a037d364c4
commit
86a0cc696a
38
Dockerfile
38
Dockerfile
|
|
@ -1,29 +1,13 @@
|
||||||
FROM --platform=$BUILDPLATFORM golang:1.21-alpine AS build
|
FROM golang:1.21-alpine
|
||||||
ARG TARGETPLATFORM
|
|
||||||
ARG BUILDPLATFORM
|
ENV CGO_ENABLED=0
|
||||||
ARG TARGETOS
|
ENV GOPROXY=https://goproxy.cn,direct
|
||||||
ARG TARGETARCH
|
|
||||||
ARG TARGETVARIANT
|
# 安装必要的工具
|
||||||
ENV CGO_ENABLED=0
|
RUN apk add --no-cache git tzdata bash curl
|
||||||
ARG GOPROXY=https://goproxy.cn,direct
|
|
||||||
ENV GOPROXY=$GOPROXY
|
WORKDIR /app/server
|
||||||
WORKDIR /app
|
|
||||||
RUN apk add --no-cache git
|
|
||||||
COPY server/ ./server/
|
|
||||||
COPY web/ ./web/
|
|
||||||
WORKDIR /app/server
|
|
||||||
# 解析平台并执行交叉编译;arm 平台根据 variant 设置 GOARM
|
|
||||||
RUN OS=${TARGETOS:-$(echo $TARGETPLATFORM | cut -d/ -f1)} \
|
|
||||||
&& ARCH=${TARGETARCH:-$(echo $TARGETPLATFORM | cut -d/ -f2)} \
|
|
||||||
&& VARIANT=${TARGETVARIANT:-$(echo $TARGETPLATFORM | cut -d/ -f3)} \
|
|
||||||
&& if [ "$ARCH" = "arm" ]; then export GOARM=$(echo "$VARIANT" | sed 's/^v//;s/[^0-9]//g'); else export GOARM=; fi \
|
|
||||||
&& go env -w GOPROXY=$GOPROXY \
|
|
||||||
&& GOOS=$OS GOARCH=$ARCH go build -trimpath -ldflags="-s -w" -o /app/bin/marketing-data-server ./cmd/server
|
|
||||||
|
|
||||||
FROM alpine:3.19
|
|
||||||
WORKDIR /app
|
|
||||||
COPY --from=build /app/bin/marketing-data-server /app/bin/marketing-data-server
|
|
||||||
COPY --from=build /app/web /app/web
|
|
||||||
RUN mkdir -p /app/storage/export
|
|
||||||
EXPOSE 8077
|
EXPOSE 8077
|
||||||
ENTRYPOINT ["/app/bin/marketing-data-server"]
|
|
||||||
|
CMD ["go", "run", "cmd/server/main.go"]
|
||||||
|
|
|
||||||
|
|
@ -41,9 +41,7 @@ docker run -d \
|
||||||
--name "$CID_NAME" \
|
--name "$CID_NAME" \
|
||||||
--restart unless-stopped \
|
--restart unless-stopped \
|
||||||
-p "$PORT:8077" \
|
-p "$PORT:8077" \
|
||||||
-v "$ROOT_DIR/storage/export:/app/storage/export" \
|
-v "$ROOT_DIR:/app" \
|
||||||
-v "$ROOT_DIR/log:/app/log" \
|
|
||||||
-v "$CONFIG_PATH:/app/server/config.yaml:ro" \
|
|
||||||
"$USE_IMAGE"
|
"$USE_IMAGE"
|
||||||
echo "container: $CID_NAME image: $USE_IMAGE port: $PORT"
|
echo "container: $CID_NAME image: $USE_IMAGE port: $PORT"
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue