Support vendor tarballs for exchange/merchant; pass tarball args

This commit is contained in:
nocci 2025-12-12 11:24:40 +00:00
parent 076d8a76f5
commit 30c6b94d8c
5 changed files with 50 additions and 7 deletions

View file

@ -45,6 +45,8 @@ EXCHANGE_REF=master
MERCHANT_REF=master MERCHANT_REF=master
LIBEUFIN_REF=master LIBEUFIN_REF=master
GNUNET_TARBALL_URL=https://git-www.taler.net/gnunet.git/snapshot/gnunet-512c42a713e52a2033928a302e445376d3bcb3a7.tar.gz GNUNET_TARBALL_URL=https://git-www.taler.net/gnunet.git/snapshot/gnunet-512c42a713e52a2033928a302e445376d3bcb3a7.tar.gz
EXCHANGE_TARBALL_URL=
MERCHANT_TARBALL_URL=
# Secrets path (host path mounted into /etc/taler/secrets) # Secrets path (host path mounted into /etc/taler/secrets)
EXCHANGE_SECRETS_PATH=./exchange/secrets EXCHANGE_SECRETS_PATH=./exchange/secrets

View file

@ -9,6 +9,8 @@ ARG MERCHANT_REF=master
ARG LIBEUFIN_REF=master ARG LIBEUFIN_REF=master
# Optional tarball URLs (when set, git clone is skipped) # Optional tarball URLs (when set, git clone is skipped)
ARG GNUNET_TARBALL_URL= ARG GNUNET_TARBALL_URL=
ARG EXCHANGE_TARBALL_URL=
ARG MERCHANT_TARBALL_URL=
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
build-essential git automake libtool pkg-config \ build-essential git automake libtool pkg-config \
@ -62,11 +64,48 @@ RUN set -e; \
./configure --prefix=/usr && make -j$(nproc) && make install ./configure --prefix=/usr && make -j$(nproc) && make install
# Taler Exchange + Merchant # Taler Exchange + Merchant
RUN git clone --depth 1 --branch "${EXCHANGE_REF}" https://git.taler.net/exchange.git /src/exchange && \ RUN set -e; \
cd /src/exchange && ./bootstrap && \ # Exchange
./configure --prefix=/usr && make -j$(nproc) && make install && \ EXCHANGE_DIR=""; \
git clone --depth 1 --branch "${MERCHANT_REF}" https://git.taler.net/merchant.git /src/merchant && \ if ls /vendor/exchange*.tar.gz >/dev/null 2>&1; then \
cd /src/merchant && ./bootstrap && \ LOCAL_TARBALL="$(ls /vendor/exchange*.tar.gz | head -1)"; \
echo "Using local Exchange tarball from ${LOCAL_TARBALL}"; \
mkdir -p /src && cd /src; \
cp "${LOCAL_TARBALL}" exchange.tar.gz; \
tar xzf exchange.tar.gz; \
EXCHANGE_DIR="$(ls -d exchange-* | head -1)"; \
elif [ -n "${EXCHANGE_TARBALL_URL}" ]; then \
echo "Fetching Exchange tarball ${EXCHANGE_TARBALL_URL}"; \
mkdir -p /src && cd /src; \
curl -L "${EXCHANGE_TARBALL_URL}" -o exchange.tar.gz; \
tar xzf exchange.tar.gz; \
EXCHANGE_DIR="$(ls -d exchange-* | head -1)"; \
else \
git clone --depth 1 --branch "${EXCHANGE_REF}" https://git.taler.net/exchange.git /src/exchange; \
EXCHANGE_DIR="/src/exchange"; \
fi; \
cd "${EXCHANGE_DIR}" && ./bootstrap && \
./configure --prefix=/usr && make -j$(nproc) && make install; \
# Merchant
MERCHANT_DIR=""; \
if ls /vendor/merchant*.tar.gz >/dev/null 2>&1; then \
LOCAL_TARBALL="$(ls /vendor/merchant*.tar.gz | head -1)"; \
echo "Using local Merchant tarball from ${LOCAL_TARBALL}"; \
mkdir -p /src && cd /src; \
cp "${LOCAL_TARBALL}" merchant.tar.gz; \
tar xzf merchant.tar.gz; \
MERCHANT_DIR="$(ls -d merchant-* | head -1)"; \
elif [ -n "${MERCHANT_TARBALL_URL}" ]; then \
echo "Fetching Merchant tarball ${MERCHANT_TARBALL_URL}"; \
mkdir -p /src && cd /src; \
curl -L "${MERCHANT_TARBALL_URL}" -o merchant.tar.gz; \
tar xzf merchant.tar.gz; \
MERCHANT_DIR="$(ls -d merchant-* | head -1)"; \
else \
git clone --depth 1 --branch "${MERCHANT_REF}" https://git.taler.net/merchant.git /src/merchant; \
MERCHANT_DIR="/src/merchant"; \
fi; \
cd "${MERCHANT_DIR}" && ./bootstrap && \
./configure --prefix=/usr && make -j$(nproc) && make install ./configure --prefix=/usr && make -j$(nproc) && make install
# LibEuFin (Bank) # LibEuFin (Bank)

View file

@ -47,7 +47,7 @@ Container-Stack für GNU Taler (Exchange, Merchant, LibEuFin Bank) mit optionale
- Bei eigener CA `EXCHANGE_CURL_OPTS="-k"` setzen, wenn der Offline-Job `/keys` über HTTPS abfragt. - Bei eigener CA `EXCHANGE_CURL_OPTS="-k"` setzen, wenn der Offline-Job `/keys` über HTTPS abfragt.
- Nach Passwortänderungen in `.env` ist kein manuelles SQL-Rendering nötig; das Init-Skript liest sie beim Start. - Nach Passwortänderungen in `.env` ist kein manuelles SQL-Rendering nötig; das Init-Skript liest sie beim Start.
- Release-Refs/Tarballs: Tags/Commits unter `https://git.taler.net/{gnunet,exchange,merchant,libeufin}.git/` ansehen (Tarballs via `.../snapshot/<tag>.tar.gz`) und `*_REF`/`GNUNET_TARBALL_URL` entsprechend setzen. - Release-Refs/Tarballs: Tags/Commits unter `https://git.taler.net/{gnunet,exchange,merchant,libeufin}.git/` ansehen (Tarballs via `.../snapshot/<tag>.tar.gz`) und `*_REF`/`GNUNET_TARBALL_URL` entsprechend setzen.
- Offline-Tarball: Lege ein GNUnet-Tarball unter `vendor/` (z.B. `gnunet-*.tar.gz`) ab, um es beim Build zu nutzen; bei unvollständigem Tarball fällt der Build auf Git zurück. - Offline-Tarballs: Lege Tarballs unter `vendor/` ab (`gnunet-*.tar.gz`, `exchange-*.tar.gz`, `merchant-*.tar.gz`); bei unvollständigem Tarball fällt der Build auf Git zurück.
## Nützliche Kommandos ## Nützliche Kommandos
- Logs: `docker compose logs -f exchange` (oder bank/merchant/caddy/wordpress). - Logs: `docker compose logs -f exchange` (oder bank/merchant/caddy/wordpress).

View file

@ -47,7 +47,7 @@ Container stack for GNU Taler (Exchange, Merchant, LibEuFin Bank) with optional
- With custom CAs, set `EXCHANGE_CURL_OPTS="-k"` if the offline job needs to curl `/keys` over HTTPS. - With custom CAs, set `EXCHANGE_CURL_OPTS="-k"` if the offline job needs to curl `/keys` over HTTPS.
- After changing DB passwords in `.env`, no manual SQL rendering is needed—the init script reads them at container start. - After changing DB passwords in `.env`, no manual SQL rendering is needed—the init script reads them at container start.
- Release refs/tarballs: Browse tags/commits at `https://git.taler.net/{gnunet,exchange,merchant,libeufin}.git/` (Tarballs via `.../snapshot/<tag>.tar.gz`) and set `*_REF`/`GNUNET_TARBALL_URL` accordingly. - Release refs/tarballs: Browse tags/commits at `https://git.taler.net/{gnunet,exchange,merchant,libeufin}.git/` (Tarballs via `.../snapshot/<tag>.tar.gz`) and set `*_REF`/`GNUNET_TARBALL_URL` accordingly.
- Offline tarball drop-in: place a GNUnet tarball under `vendor/` (e.g., `gnunet-*.tar.gz`); the build picks the first match and falls back to git if the tarball looks incomplete. - Offline tarball drop-in: place tarballs under `vendor/` (`gnunet-*.tar.gz`, `exchange-*.tar.gz`, `merchant-*.tar.gz`); the build picks the first match and falls back to git if incomplete.
## Useful commands ## Useful commands
- Logs: `docker compose logs -f exchange` (or bank/merchant/caddy/wordpress). - Logs: `docker compose logs -f exchange` (or bank/merchant/caddy/wordpress).

View file

@ -17,7 +17,9 @@ docker build \
--build-arg GNUNET_REF="${GNUNET_REF:-v0.26.1}" \ --build-arg GNUNET_REF="${GNUNET_REF:-v0.26.1}" \
--build-arg GNUNET_TARBALL_URL="${GNUNET_TARBALL_URL:-}" \ --build-arg GNUNET_TARBALL_URL="${GNUNET_TARBALL_URL:-}" \
--build-arg EXCHANGE_REF="${EXCHANGE_REF:-master}" \ --build-arg EXCHANGE_REF="${EXCHANGE_REF:-master}" \
--build-arg EXCHANGE_TARBALL_URL="${EXCHANGE_TARBALL_URL:-}" \
--build-arg MERCHANT_REF="${MERCHANT_REF:-master}" \ --build-arg MERCHANT_REF="${MERCHANT_REF:-master}" \
--build-arg MERCHANT_TARBALL_URL="${MERCHANT_TARBALL_URL:-}" \
--build-arg LIBEUFIN_REF="${LIBEUFIN_REF:-master}" \ --build-arg LIBEUFIN_REF="${LIBEUFIN_REF:-master}" \
-t "${IMAGE_TAG}" . -t "${IMAGE_TAG}" .