Fosi Fossil Service
Small teams. Open source. Built on Fossil.

CaaS / Lamina

Unified Management for Fossil Repositories

Public | Owner: CaaS | Default branch: trunk | Last update: 2026-10-25 00:41

Artifact e13036e3c88404e178b3aba1993a2766b9d1870f3bda93989994820e79629602:


# 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"]

Clone

You can clone this repository with the following command:

fossil clone https://fosi.dev/CaaS/Lamina

Contribute

The best way to contribute is through e-mail. See the project documentation for more details.