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.
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
# 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
|
||||
FROM haskell:9.12.2 AS haskell-build
|
||||
|
||||
RUN apt-get update -y
|
||||
RUN apt-get upgrade -y
|
||||
@@ -24,6 +24,8 @@ 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
|
||||
|
||||
@@ -37,6 +39,8 @@ 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
|
||||
|
||||
@@ -51,6 +55,8 @@ 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
|
||||
|
||||
@@ -59,4 +65,12 @@ 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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# docker-finance | modern accounting for the power-user
|
||||
#
|
||||
# Copyright (C) 2024 Aaron Fiore (Founder, Evergreen Crypto LLC)
|
||||
# Copyright (C) 2024-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
|
||||
@@ -19,6 +19,29 @@ services:
|
||||
hledger-suite:
|
||||
image: evergreencrypto/hledger-suite:latest
|
||||
container_name: evergreencrypto_hledger-suite
|
||||
build: .
|
||||
build:
|
||||
context: .
|
||||
target: hledger-suite
|
||||
|
||||
hledger:
|
||||
image: evergreencrypto/hledger:build
|
||||
container_name: evergreencrypto_hledger
|
||||
build:
|
||||
context: .
|
||||
target: hledger
|
||||
|
||||
hledger-iadd:
|
||||
image: evergreencrypto/hledger-iadd:build
|
||||
container_name: evergreencrypto_hledger-iadd
|
||||
build:
|
||||
context: .
|
||||
target: hledger-iadd
|
||||
|
||||
hledger-flow:
|
||||
image: evergreencrypto/hledger-flow:build
|
||||
container_name: evergreencrypto_hledger-flow
|
||||
build:
|
||||
context: .
|
||||
target: hledger-flow
|
||||
|
||||
# vim: sw=2 sts=2 si ai et
|
||||
|
||||
Reference in New Issue
Block a user