# syntax=docker/dockerfile:1

# =============================================================================
# 此 Dockerfile 的用途：
#   建置 Release Cleanup docker container action 的映像。
#   以 node alpine 為基底，複製 app/ 主程式與 entrypoint.sh，設定入口。
#
# 更新日期：2026/06/30 12:02:55（台灣時區）
# =============================================================================

# -----------------------------------------------------------------------------
# 1. 參數處理：node base image tag 以 ARG 注入
#    - 預設 lts-alpine；建置時可用 --build-arg NODE_VERSION=... 覆寫
#    - 主程式以原生 fetch 呼叫 Gitea API（需 Node 18+），alpine 為最小可用基底
# -----------------------------------------------------------------------------
# 宣告可覆寫的建置參數 NODE_VERSION，預設值 lts-alpine
ARG NODE_VERSION=lts-alpine
# 以 node:${NODE_VERSION} 作為基底映像；引用上方 ARG 決定實際 node 版本／變體
FROM node:${NODE_VERSION}

# -----------------------------------------------------------------------------
# 2. 安裝套件：主程式無第三方相依，亦未呼叫外部執行檔
#    （不需 curl/jq/git 等 OS 套件），故略過此步驟
# -----------------------------------------------------------------------------

# 設定後續指令的工作目錄為 /app；不存在時會自動建立，COPY 的相對目的地以此為基準
WORKDIR /app

# -----------------------------------------------------------------------------
# 3. 複製檔案：主程式（app/）與啟動腳本
# -----------------------------------------------------------------------------
# 複製 app/ 目錄全部內容到映像內 /app/（主程式，含 index.js 進入點）
COPY app/ /app/
# 複製啟動腳本到映像根目錄 /entrypoint.sh（供 ENTRYPOINT 使用）
COPY entrypoint.sh /entrypoint.sh

# -----------------------------------------------------------------------------
# 4. 執行程序：賦予啟動腳本執行權限
#    - 無 build／transpile 需求，故不執行建置
# -----------------------------------------------------------------------------
# 對 /entrypoint.sh 加上可執行權限，確保容器啟動時能直接執行該腳本
RUN chmod +x /entrypoint.sh

# -----------------------------------------------------------------------------
# 5. 縮小映像檔：無相依、無 build 產物可裁剪，alpine 單階段即為最小映像，
#    多階段建置在此無縮小效益，故不採用
# -----------------------------------------------------------------------------

# -----------------------------------------------------------------------------
# 6. 設定入口：以 entrypoint.sh 啟動（其內 node 指向 /app/index.js）
# -----------------------------------------------------------------------------
# 設定容器進入點為 /entrypoint.sh（exec 形式）；容器啟動即執行該腳本
ENTRYPOINT ["/entrypoint.sh"]
