# 多階段構建 - 編譯階段 FROM golang:1.22-alpine AS builder WORKDIR /build # 安装編譯依賴 RUN apk add --no-cache git bash zip make gcc musl-dev # 複製源代碼 COPY . . # 執行編譯腳本 # 支持通過 --build-arg 指定版本和類型 ARG VERSION=latest ARG BUILD_TYPE=community ARG TARGETARCH=amd64 RUN cd build && \ chmod +x build.sh && \ ./build.sh linux ${TARGETARCH} ${BUILD_TYPE} # ===================================================== # 運行階段 FROM alpine:latest LABEL maintainer="Your Name" LABEL description="GoEdge Node - Edge Computing and CDN" ENV TZ="Asia/Taipei" ENV ROOT_DIR=/usr/local/goedge # 安装運行時依賴 RUN apk add --no-cache tzdata ca-certificates bash # 從編譯階段複製二進制文件和配置 COPY --from=builder /build/dist/edge-node ${ROOT_DIR}/edge-node/ # 創建數據目錄 RUN mkdir -p ${ROOT_DIR}/edge-node/{data,logs,configs} && \ chmod +x ${ROOT_DIR}/edge-node/bin/edge-node # 暴露默認端口 # 7777 - Edge Node HTTP # 7778 - Edge Node HTTPS # 8000-9000 - 用戶應用端口範圍 EXPOSE 7777 7778 8000-9000 # 啟動腳本 RUN echo '#!/bin/sh\n\ set -e\n\ \n\ # 創建必要的目錄\n\ mkdir -p ${ROOT_DIR}/edge-node/{data,logs,configs}\n\ \n\ # 啟動 Edge Node\n\ exec ${ROOT_DIR}/edge-node/bin/edge-node\n\ ' > /entrypoint.sh && \ chmod +x /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"]