Files
docker-finance/client/Dockerfiles/remote/hledger-suite/Dockerfile
Aaron Fiore f669c01f97 client: Dockerfiles: remote: hledger-suite: use multi-stage
The previous hledger-suite image was treated as a monolithic development
image that was never intended to be pulled from directly, at least
outside of the `dfi` build system.

hledger-suite has now been parsed out into separate build targets for
faster maintenance and development, with the final production image
being a massively slimmer "placeholder" image for the built binaries.

`hledger-suite:latest` can now be pulled from directly without pulling
the entire build system and related artifacts.
2025-12-10 11:56:43 -08:00

77 lines
2.0 KiB
Docker

# docker-finance | modern accounting for the power-user
#
# Copyright (C) 2021-2025 Aaron Fiore (Founder, Evergreen Crypto LLC)
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
FROM haskell:9.12.2 AS haskell-build
RUN apt-get update -y
RUN apt-get upgrade -y
#
# hledger-flow
#
FROM haskell-build AS hledger-flow
WORKDIR /usr/local/src
RUN git clone --depth=1 https://github.com/apauley/hledger-flow -b v0.16.0
WORKDIR /usr/local/src/hledger-flow
RUN stack setup
RUN stack install --install-ghc
RUN stack install --dependencies-only
RUN stack install --local-bin-path=/usr/local/bin
#
# hledger-iadd
#
FROM hledger-flow AS hledger-iadd
WORKDIR /usr/local/src
RUN git clone --depth=1 https://github.com/hpdeifel/hledger-iadd -b v1.3.22
WORKDIR /usr/local/src/hledger-iadd
RUN cabal update
RUN cabal v1-install --only-dependencies
RUN cabal v1-configure --bindir /usr/local/bin
RUN cabal v1-build
RUN cabal v1-copy
#
# hledger / hledger-ui / hledger-web
#
FROM hledger-iadd AS hledger
WORKDIR /usr/local/src
RUN git clone --depth=1 https://github.com/simonmichael/hledger -b 1.51.1
WORKDIR /usr/local/src/hledger
RUN stack setup
RUN stack install --stack-yaml=stack.yaml --dependencies-only
RUN stack install --stack-yaml=stack.yaml --local-bin-path=/usr/local/bin
#
# Production stage
#
FROM debian:stable-slim AS hledger-suite
COPY --from=hledger /usr/local/bin/hledger* /usr/local/bin/
# vim: sw=2 sts=2 si ai et