# renovate: datasource=github-tags depName=beancount packageName=beancount/beancount ARG BEANCOUNT_VERSION=2.3.6 # renovate: datasource=github-tags depName=fava packageName=beancount/fava ARG FAVA_VERSION=1.28 FROM node:20.17.0-slim AS node_build_env ARG FAVA_VERSION RUN set -eux; \ apt-get update; \ apt-get install -y python3-babel git make; RUN git clone --depth 1 --branch v${FAVA_VERSION} https://github.com/beancount/fava /tmp/build/fava; WORKDIR /tmp/build/fava RUN set -eux; \ make -j $(nproc); \ rm -rf .*cache .eggs .tox build dist frontend/node_modules; \ find . -type f -name '*.py[c0]' -delete; \ find . -type d -name "__pycache__" -delete; FROM python:3.12.6-slim AS build_env ARG BEANCOUNT_VERSION ENV PATH "/app/bin:$PATH" RUN set -eux; \ apt-get update; \ apt-get install -y build-essential libxml2-dev libxslt-dev curl git; \ python -mvenv /app; COPY --from=node_build_env /tmp/build/fava /tmp/build/fava RUN git clone --depth 1 --branch ${BEANCOUNT_VERSION} https://github.com/beancount/beancount /tmp/build/beancount; WORKDIR /tmp/build/beancount COPY requirements.txt ./ RUN set -eux; \ CFLAGS=-s pip3 install -U /tmp/build/beancount; \ pip3 install -U /tmp/build/fava; \ pip3 install -r requirements.txt; \ pip3 uninstall -y pip; \ rm -r /app/share; \ find /app -name __pycache__ -exec rm -rf -v {} + FROM python:3.12.6-slim COPY --from=build_env /app /app # Default fava port number EXPOSE 5000 ENV BEAN_ROOT "" ENV BEANCOUNT_FILE "" ENV FAVA_HOST "0.0.0.0" ENV PATH "/app/bin:$PATH" CMD ["fava"]