Add sync service and fix tarball detection for taler-exchange/merchant

This commit is contained in:
nocci 2025-12-12 12:38:53 +00:00
parent 9543a56982
commit 2121a7763a
5 changed files with 97 additions and 5 deletions

View file

@ -7,11 +7,13 @@ ARG GNUNET_REF=v0.26.1
ARG EXCHANGE_REF=master
ARG MERCHANT_REF=master
ARG LIBEUFIN_REF=master
ARG SYNC_REF=master
# Optional tarball URLs (when set, git clone is skipped)
ARG GNUNET_TARBALL_URL=
ARG EXCHANGE_TARBALL_URL=
ARG MERCHANT_TARBALL_URL=
ARG LIBEUFIN_TARBALL_URL=
ARG SYNC_TARBALL_URL=
RUN apt-get update && apt-get install -y \
build-essential git automake autoconf autopoint libtool pkg-config \
@ -69,8 +71,8 @@ RUN set -e; \
# Exchange
EXCHANGE_DIR=""; \
EXCHANGE_TAR=0; \
if ls /vendor/exchange*.tar.gz >/dev/null 2>&1; then \
LOCAL_TARBALL="$(ls /vendor/exchange*.tar.gz | head -1)"; \
if ls /vendor/taler-exchange*.tar.gz /vendor/exchange*.tar.gz >/dev/null 2>&1; then \
LOCAL_TARBALL="$(ls /vendor/taler-exchange*.tar.gz /vendor/exchange*.tar.gz 2>/dev/null | head -1)"; \
echo "Using local Exchange tarball from ${LOCAL_TARBALL}"; \
mkdir -p /src && cd /src; \
cp "${LOCAL_TARBALL}" exchange.tar.gz; \
@ -114,8 +116,8 @@ RUN set -e; \
cd "${EXCHANGE_DIR}" && env GNUNET_PREFIX=/usr GIT_CONFIG_NOSYSTEM=1 GIT_DIR= GIT_WORK_TREE=. ./configure --prefix=/usr && make -j$(nproc) && make install; \
# Merchant
MERCHANT_DIR=""; MERCHANT_TAR=0; \
if ls /vendor/merchant*.tar.gz >/dev/null 2>&1; then \
LOCAL_TARBALL="$(ls /vendor/merchant*.tar.gz | head -1)"; \
if ls /vendor/taler-merchant*.tar.gz /vendor/merchant*.tar.gz >/dev/null 2>&1; then \
LOCAL_TARBALL="$(ls /vendor/taler-merchant*.tar.gz /vendor/merchant*.tar.gz 2>/dev/null | head -1)"; \
echo "Using local Merchant tarball from ${LOCAL_TARBALL}"; \
mkdir -p /src && cd /src; \
cp "${LOCAL_TARBALL}" merchant.tar.gz; \
@ -181,6 +183,53 @@ RUN set -e; \
cd "${LIBEUFIN_DIR}" && ./bootstrap && \
./configure --prefix=/usr && make -j$(nproc) && make install
# Taler Sync (optional wallet backup service)
RUN set -e; \
SYNC_DIR=""; SYNC_TAR=0; \
if ls /vendor/sync*.tar.gz >/dev/null 2>&1; then \
LOCAL_TARBALL="$(ls /vendor/sync*.tar.gz | head -1)"; \
echo "Using local Sync tarball from ${LOCAL_TARBALL}"; \
mkdir -p /src && cd /src; \
cp "${LOCAL_TARBALL}" sync.tar.gz; \
tar xzf sync.tar.gz; \
SYNC_DIR="$(ls -d sync-* | head -1)"; \
SYNC_TAR=1; \
elif [ -n "${SYNC_TARBALL_URL}" ]; then \
echo "Fetching Sync tarball ${SYNC_TARBALL_URL}"; \
mkdir -p /src && cd /src; \
curl -L "${SYNC_TARBALL_URL}" -o sync.tar.gz; \
tar xzf sync.tar.gz; \
SYNC_DIR="$(ls -d sync-* | head -1)"; \
SYNC_TAR=1; \
else \
git clone --depth 1 --branch "${SYNC_REF}" https://git.taler.net/sync.git /src/sync; \
SYNC_DIR="/src/sync"; \
fi; \
if [ "${SYNC_TAR}" = "1" ]; then \
if [ -f "${SYNC_DIR}/configure" ]; then \
echo "Using existing configure for Sync tarball"; \
else \
set +e; \
(cd "${SYNC_DIR}" && autoreconf -fi); \
rc=$?; \
set -e; \
if [ $rc -ne 0 ]; then \
echo "Autoreconf failed for Sync tarball; falling back to git clone ${SYNC_REF}"; \
rm -rf "${SYNC_DIR}"; \
git clone --depth 1 --branch "${SYNC_REF}" https://git.taler.net/sync.git /src/sync; \
SYNC_DIR="/src/sync"; \
cd "${SYNC_DIR}" && env GNUNET_PREFIX=/usr ./bootstrap; \
fi; \
fi; \
else \
if [ ! -f "${SYNC_DIR}/configure" ]; then \
cd "${SYNC_DIR}" && env GNUNET_PREFIX=/usr ./bootstrap; \
else \
echo "Skipping bootstrap for Sync (configure present)"; \
fi; \
fi; \
cd "${SYNC_DIR}" && env GNUNET_PREFIX=/usr GIT_CONFIG_NOSYSTEM=1 GIT_DIR= GIT_WORK_TREE=. ./configure --prefix=/usr && make -j$(nproc) && make install
# Shared entrypoint for dbinit + service start
COPY entrypoints/with-dbinit.sh /usr/local/bin/with-dbinit.sh
COPY scripts/enable-exchange-account.sh /usr/local/bin/enable-exchange-account.sh