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