1
Fork 0
ci-images/images/fava/Dockerfile

59 lines
1.6 KiB
Docker

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