# syntax=docker/dockerfile:1 FROM debian:bookworm-slim AS build # VERSION is declared after the expensive layers: the legacy builder # invalidates every layer that follows a changed build argument. RUN apt-get update \ && apt-get install -y --no-install-recommends build-essential libncurses-dev \ libssl-dev \ && rm -rf /var/lib/apt/lists/* WORKDIR /src COPY . . ARG VERSION=0.1.0-dev # With .prebuilt/ the binaries are cross-compiled on the development machine # (see deploy/Dockerfile.cross); otherwise build and test from source. RUN if [ -x .prebuilt/bokfd ]; then \ mkdir -p build && \ cp .prebuilt/bokfd .prebuilt/bokfctl .prebuilt/bokftui build/; \ else \ make -j"$(nproc)" VERSION="$VERSION" && make test VERSION="$VERSION"; \ fi FROM debian:bookworm-slim AS runtime RUN apt-get update \ && apt-get install -y --no-install-recommends libncursesw6 libssl3 \ ca-certificates util-linux \ && rm -rf /var/lib/apt/lists/* \ && useradd --system --uid 10001 --home-dir /var/lib/bokfd \ --shell /usr/sbin/nologin bokfd \ && install -d -o bokfd -g bokfd /var/lib/bokfd /var/lib/bokfd/backup \ /var/lib/bokfd/export /var/lib/bokfd/certs /run/bokfd COPY --from=build /src/build/bokfd /src/build/bokfctl /src/build/bokftui \ /usr/local/bin/ COPY --from=build /src/data/bas_k2.csv /src/data/bas_k3.csv \ /usr/local/share/bokf/ COPY deploy/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh RUN chmod 0755 /usr/local/bin/docker-entrypoint.sh ENV BOKFD_DB=/var/lib/bokfd/bokfd.db \ BOKFD_SOCKET=/run/bokfd/bokfd.sock \ BOKFD_BACKUP_DIR=/var/lib/bokfd/backup \ BOKFD_EXPORT_DIR=/var/lib/bokfd/export VOLUME ["/var/lib/bokfd", "/run/bokfd"] HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \ CMD ["bokfctl", "health"] ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] CMD ["bokfd"]