aboutsummaryrefslogtreecommitdiff
path: root/Dockerfile
blob: b55f44d2cf6236b97f68d2aed63da141baef212a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 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"]