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