60
Dockerfile
Normal file
60
Dockerfile
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
# 多階段構建 - 編譯階段
|
||||||
|
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"]
|
||||||
Reference in New Issue
Block a user