Files
GoEdgeNode/Dockerfile
ChenKaiLiuG d17604a2c0 Add Dockerfile
Signed-off-by: ChenKaiLiuG <ckliu119@gmail.com>
2026-01-04 12:36:59 +00:00

61 lines
1.4 KiB
Docker

# 多階段構建 - 編譯階段
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"]