summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2023-07-05 19:07:30 +0200
committerFlorian Dold <florian@dold.me>2023-07-05 19:07:30 +0200
commit64f0c69933f67a5f78c14b30169c9310fc78bd4a (patch)
tree155522d44fc4fd399bdfd290b7b7a007c02dc146
parent893b5da23f94e20a00b575cf115f885d4266f30e (diff)
downloaddeployment-64f0c69933f67a5f78c14b30169c9310fc78bd4a.tar.gz
deployment-64f0c69933f67a5f78c14b30169c9310fc78bd4a.tar.bz2
deployment-64f0c69933f67a5f78c14b30169c9310fc78bd4a.zip
sandcastle: structure base image with stages
-rw-r--r--sandcastle/images/base/Dockerfile51
1 files changed, 30 insertions, 21 deletions
diff --git a/sandcastle/images/base/Dockerfile b/sandcastle/images/base/Dockerfile
index 6d687f6..414445d 100644
--- a/sandcastle/images/base/Dockerfile
+++ b/sandcastle/images/base/Dockerfile
@@ -1,4 +1,4 @@
-FROM debian:bookworm
+FROM debian:bookworm as base-system
RUN apt-get update
RUN apt-get install -y \
@@ -44,35 +44,27 @@ RUN apt-get install -y \
# a venv or per-user installation of the package.
RUN pip3 install --break-system-packages requests click poetry uwsgi htmlark
+FROM base-system as mhd
COPY buildconfig/tags.sh tags.sh
-
RUN . /tags.sh && git clone git://git.gnunet.org/libmicrohttpd \
--branch ${TAG_LIBMHD:-master}
-RUN . /tags.sh && git clone git://git.gnunet.org/gnunet \
- --branch ${TAG_GNUNET:-master}
-RUN . /tags.sh && git clone git://git.taler.net/exchange \
- --branch ${TAG_EXCHANGE:-master}
-RUN . /tags.sh && git clone git://git.taler.net/merchant \
- --branch ${TAG_MERCHANT:-master}
-RUN . /tags.sh && git clone git://git.taler.net/libeufin \
- --branch ${TAG_LIBEUFIN:-master}
-RUN . /tags.sh && git clone git://git.taler.net/taler-merchant-demos \
- --branch ${TAG_MERCHANT_DEMOS:-master}
-RUN . /tags.sh && git clone git://git.taler.net/wallet-core \
- --branch ${TAG_WALLET:-master}
-RUN . /tags.sh && git clone git://git.taler.net/sync \
- --branch ${TAG_SYNC:-master}
-
WORKDIR /libmicrohttpd
RUN ./bootstrap
RUN ./configure --disable-doc
RUN make install
+FROM mhd AS gnunet
+RUN . /tags.sh && git clone git://git.gnunet.org/gnunet \
+ --branch ${TAG_GNUNET:-master}
WORKDIR /gnunet
RUN ./bootstrap
RUN ./configure --enable-logging=verbose --disable-documentation
RUN make install
+WORKDIR /
+FROM gnunet AS exchange
+RUN . /tags.sh && git clone git://git.taler.net/exchange \
+ --branch ${TAG_EXCHANGE:-master}
WORKDIR /exchange
RUN if . /tags.sh && test "${TAG_EXCHANGE:-}" = "v0.9.0"; then \
# Init Gana and checkout the v0.9.0-compatible commit.
@@ -88,43 +80,60 @@ fi
RUN ./bootstrap
RUN ./configure CFLAGS="-ggdb -O0" --enable-logging=verbose --disable-doc
RUN make install
+WORKDIR /
+FROM exchange AS merchant
+RUN . /tags.sh && git clone git://git.taler.net/merchant \
+ --branch ${TAG_MERCHANT:-master}
WORKDIR /merchant
RUN ./bootstrap
RUN ./configure CFLAGS="-ggdb -O0" \
--enable-logging=verbose \
--disable-doc
RUN make install
+WORKDIR /
+FROM base-system AS libeufin
+RUN . /tags.sh && git clone git://git.taler.net/libeufin \
+ --branch ${TAG_LIBEUFIN:-master}
WORKDIR /libeufin
RUN ./bootstrap
RUN ./configure
RUN make install
+WORKDIR /
+FROM base-system AS taler-merchant-demos
+RUN . /tags.sh && git clone git://git.taler.net/taler-merchant-demos \
+ --branch ${TAG_MERCHANT_DEMOS:-master}
WORKDIR /taler-merchant-demos
RUN ./bootstrap
RUN ./configure
RUN make install
+WORKDIR /
+FROM base-system AS wallet-core
+RUN . /tags.sh && git clone git://git.taler.net/wallet-core \
+ --branch ${TAG_WALLET:-master}
RUN npm install -g pnpm@^7.0.0
-
WORKDIR /wallet-core
RUN ./bootstrap
-
WORKDIR ./packages/demobank-ui
RUN ./configure
RUN make install
-
# Install CLI to provide integration tests.
WORKDIR ../taler-wallet-cli
RUN ./configure
RUN make install
+WORKDIR /
+
+FROM exchange AS sync
+RUN . /tags.sh && git clone git://git.taler.net/sync \
+ --branch ${TAG_SYNC:-master}
WORKDIR /sync
RUN ./bootstrap
RUN ./configure CFLAGS="-ggdb -O0" \
--enable-logging=verbose \
--disable-doc
RUN make install
-
WORKDIR /