# linux/amd64:ARM 开发机用 buildx 交叉构建。
# 基础系统 Ubuntu 24.04(noble);OTP 27 来自 hexpm,不用发行版 erlang(OTP 25 + wx/GTK)。
# Fossil 使用仓库根目录 linux-x64 包。监听 8827,时区 Asia/Shanghai。
FROM hexpm/erlang:27.3.4.16-ubuntu-noble-20260810 AS builder
ENV DEBIAN_FRONTEND=noninteractive \
LANG=C.UTF-8 \
ERL_FLAGS="+S 1" \
ERL_AFLAGS="+S 1"
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates git build-essential libsqlite3-dev \
&& rm -rf /var/lib/apt/lists/*
COPY docker/rebar3 /usr/local/bin/rebar3
RUN chmod +x /usr/local/bin/rebar3
WORKDIR /app
COPY docker/rebar.config ./rebar.config
COPY config ./config
COPY src ./src
COPY docker/vendor/nova /app/vendor/nova
RUN test -f /app/vendor/nova/src/nova.app.src \
&& rebar3 compile
FROM hexpm/erlang:27.3.4.16-ubuntu-noble-20260810
ENV DEBIAN_FRONTEND=noninteractive \
TZ=Asia/Shanghai \
LANG=C.UTF-8 \
FOSSIL_HOME=/app/data/fossil-home \
PATH="/usr/local/bin:${PATH}"
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates git tzdata libsqlite3-0 zlib1g libssl3t64 \
&& ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo Asia/Shanghai > /etc/timezone \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY fossil-linux-x64-20260801193352.tar.gz /tmp/fossil.tar.gz
RUN tar -xzf /tmp/fossil.tar.gz -C /usr/local/bin \
&& chmod +x /usr/local/bin/fossil \
&& rm /tmp/fossil.tar.gz
COPY --from=builder /app/_build /app/_build
COPY --from=builder /app/config /app/config
COPY docker-entrypoint.sh /app/docker-entrypoint.sh
RUN chmod +x /app/docker-entrypoint.sh \
&& mkdir -p /app/data
EXPOSE 8827
VOLUME ["/app/data"]
ENTRYPOINT ["/app/docker-entrypoint.sh"]