View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0010163 | Taler | merchant backend | public | 2025-07-08 23:12 | 2026-09-09 23:54 |
| Reporter | hank | Assigned To | |||
| Priority | normal | Severity | feature | Reproducibility | always |
| Status | acknowledged | Resolution | open | ||
| Product Version | 1.0 | ||||
| Target Version | post-2.0 | ||||
| Summary | 0010163: Dockerfile, docker-compose.yaml and Kubernetes files | ||||
| Description | Dockerfile would benefit from pinning to a *known stable combination* of merchant, exchange and gnunet. e.g. (example, doesn't work): RUN git clone --branch v0.24.2 --recurse-submodules git://git.gnunet.org/gnunet.git RUN git clone --branch v1.0.12 --recurse-submodules git://git.taler.net/exchange.git RUN git clone --branch v1.0.3 --recurse-submodules git://git.taler.net/merchant.git | ||||
| Tags | No tags attached. | ||||
| Attached Files | docker-compose.yaml (3,330 bytes)
name: taler
services:
postgres:
image: postgres:17-alpine
environment:
POSTGRES_PASSWORD: password
POSTGRES_DB: taler-merchant
volumes:
- postgresql_socket:/var/run/postgresql
- db-data:/var/lib/postgresql/data
healthcheck:
test: pg_isready --dbname=postgres://postgres:password@/postgres
interval: 10s
timeout: 1s
retries: 5
start_period: 5s
start_interval: 1s
init-db:
image: taler-merchant:latest
command: taler-merchant-dbinit -c /etc/taler/taler.conf
environment:
PGUSER: postgres
PGPASSWORD: password
volumes:
- type: bind
source: ./taler.conf
target: /etc/taler/taler.conf
read_only: true
- postgresql_socket:/var/run/postgresql
depends_on:
postgres:
condition: service_healthy
httpd:
ports:
- 8080:8080
image: taler-merchant:latest
command: taler-merchant-httpd -c /etc/taler/taler.conf
environment:
PGUSER: postgres
PGPASSWORD: password
volumes:
- type: bind
source: ./taler.conf
target: /etc/taler/taler.conf
read_only: true
- postgresql_socket:/var/run/postgresql
depends_on:
postgres:
condition: service_healthy
init-db:
condition: service_completed_successfully
webhook:
image: taler-merchant:latest
command: taler-merchant-webhook -c /etc/taler/taler.conf
environment:
PGUSER: postgres
PGPASSWORD: password
volumes:
- type: bind
source: ./taler.conf
target: /etc/taler/taler.conf
read_only: true
- postgresql_socket:/var/run/postgresql
depends_on:
postgres:
condition: service_healthy
init-db:
condition: service_completed_successfully
wirewatch:
image: taler-merchant:latest
command: taler-merchant-wirewatch -c /etc/taler/taler.conf
environment:
PGUSER: postgres
PGPASSWORD: password
volumes:
- type: bind
source: ./taler.conf
target: /etc/taler/taler.conf
read_only: true
- postgresql_socket:/var/run/postgresql
depends_on:
postgres:
condition: service_healthy
init-db:
condition: service_completed_successfully
depositcheck:
image: taler-merchant:latest
command: taler-merchant-depositcheck -c /etc/taler/taler.conf
environment:
PGUSER: postgres
PGPASSWORD: password
volumes:
- type: bind
source: ./taler.conf
target: /etc/taler/taler.conf
read_only: true
- postgresql_socket:/var/run/postgresql
depends_on:
postgres:
condition: service_healthy
init-db:
condition: service_completed_successfully
exchangekeyupdate:
image: taler-merchant:latest
command: taler-merchant-exchangekeyupdate -c /etc/taler/taler.conf
environment:
PGUSER: postgres
PGPASSWORD: password
volumes:
- type: bind
source: ./taler.conf
target: /etc/taler/taler.conf
read_only: true
- postgresql_socket:/var/run/postgresql
depends_on:
postgres:
condition: service_healthy
init-db:
condition: service_completed_successfully
volumes:
db-data:
postgresql_socket:
driver: local
Dockerfile (1,451 bytes)
FROM debian:bookworm AS build RUN apt-get update RUN apt-get -y install git pkg-config jq meson recutils autopoint texinfo RUN apt-get -y install libqrencode-dev libsqlite3-dev libltdl-dev libunistring-dev libsodium-dev libargon2-dev libcurl4-gnutls-dev libgcrypt20-dev libjansson-dev libpq-dev libmicrohttpd-dev zlib1g-dev RUN apt-get -y install python3-jinja2 postgresql-client-15 RUN mkdir /build WORKDIR /build RUN git clone --branch master --recurse-submodules git://git.gnunet.org/gnunet.git RUN git clone --branch master --recurse-submodules git://git.taler.net/exchange.git RUN git clone --branch master --recurse-submodules git://git.taler.net/merchant.git WORKDIR /build/gnunet RUN ./configure --disable-documentation RUN make RUN make install RUN ldconfig WORKDIR /build/exchange RUN ./bootstrap RUN ./configure --with-gnunet=/usr/local RUN make RUN make install RUN ldconfig WORKDIR /build/merchant RUN ./bootstrap RUN ./configure --with-exchange=/usr/local --with-gnunet=/usr/local RUN make RUN make install RUN ldconfig FROM debian:bookworm RUN apt-get update RUN apt-get -y install libqrencode4 libsqlite3-0 libltdl7 libunistring2 libsodium23 libargon2-1 libcurl3-gnutls libgcrypt20 libjansson4 libpq5 libmicrohttpd12 zlib1g RUN apt-get -y install postgresql-client-15 COPY --from=build /usr/local/bin /usr/local/bin COPY --from=build /usr/local/lib /usr/local/lib COPY --from=build /usr/local/share /usr/local/share RUN ldconfig | ||||
|
|
Well, few comments while I'm looking at this: - it doesn't include the now mandatory "donau" component, so this won't work with recent releases like 1.5 - not sure *where* we would merge this -- taler-deployment.git, maybe? Where would people expect to find this? given that it crosses multiple repos, I'm not sure merchant.git is the right place... - who will maintain this? If we just merge this and nobody maintains it, we'll just disappoint people with something that is not working... |
|
|
Hi, when starting with gnu taler, to documentation pointed me to the sandcastle-ng repo, which integrated everything using podman. It might be a little bit heavy container, but worked out. Maybe we can also refactor this to have a release and development version. |
|
|
it seems sandcastle-ng just installs the debian packages. might as well go direct to source |
|
|
updated Dockerfile as of 2026-09-09 versions are from https://git.taler.net/taler/sandcastle-ng/file/packages.toml.html commit 34246e3f5f0a9abd8b9519bae6243e2805f18ae9 Dockerfile-2 (2,282 bytes)
# https://git.taler.net/taler/sandcastle-ng/file/packages.toml.html # https://git.taler.net/taler/sandcastle-ng/commit/34246e3f5f0a9abd8b9519bae6243e2805f18ae9.html FROM debian:trixie AS build RUN apt-get update RUN apt-get install -y git pkg-config jq meson autopoint texinfo RUN apt-get install -y libqrencode-dev libsqlite3-dev libltdl-dev libunistring-dev libsodium-dev libargon2-dev libcurl4-gnutls-dev libgcrypt20-dev libjansson-dev libpq-dev libmicrohttpd-dev zlib1g-dev RUN apt-get install -y python3-jinja2 postgresql-client-17 RUN mkdir /build WORKDIR /build RUN git clone --branch v0.29.0 --recurse-submodules git://git.gnunet.org/gnunet.git RUN git clone --branch v1.6.15 --recurse-submodules git://git.taler.net/exchange.git RUN git clone --branch v1.6.8 --recurse-submodules git://git.taler.net/donau.git RUN git clone --branch v1.6.23 --recurse-submodules git://git.taler.net/merchant.git WORKDIR /build/gnunet RUN ./configure --disable-documentation RUN make RUN make install RUN ldconfig WORKDIR /build/exchange RUN ./configure --with-gnunet=/usr/local RUN make RUN make install RUN ldconfig WORKDIR /build/donau RUN ./bootstrap RUN ./configure --with-exchange=/usr/local --with-gnunet=/usr/local RUN make RUN make install RUN ldconfig WORKDIR /build/merchant RUN ./bootstrap RUN ./configure --with-exchange=/usr/local --with-gnunet=/usr/local RUN make RUN make install RUN ldconfig FROM ghcr.io/pnpm/pnpm:12.4.0 AS build-pnpm RUN apt-get update RUN apt-get install -y git build-essential nodejs RUN mkdir /build WORKDIR /build RUN git clone --branch v1.6.43 --recurse-submodules git://git.taler.net/taler-typescript-core.git WORKDIR /build/taler-typescript-core RUN ./bootstrap RUN ./configure --prefix=/usr/local RUN make RUN make install FROM debian:trixie RUN apt-get update RUN apt-get install -y libqrencode4 libsqlite3-0 libltdl7 libunistring5 libsodium23 libargon2-1 libcurl3t64-gnutls libgcrypt20 libjansson4 libpq5 libmicrohttpd12 zlib1g RUN apt-get install -y postgresql-client-17 COPY --from=build /usr/local/bin /usr/local/bin COPY --from=build /usr/local/lib /usr/local/lib COPY --from=build /usr/local/share /usr/local/share RUN ldconfig COPY --from=build-pnpm /usr/local/share/taler-merchant-webui /usr/local/share/taler-merchant-webui |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2025-07-08 23:12 | hank | New Issue | |
| 2025-07-08 23:12 | hank | File Added: docker-compose.yaml | |
| 2025-07-08 23:12 | hank | File Added: Dockerfile | |
| 2025-07-08 23:12 | hank | File Added: k8s.tar | |
| 2026-01-26 07:50 | Christian Grothoff | Status | new => acknowledged |
| 2026-01-26 07:50 | Christian Grothoff | Target Version | => post-2.0 |
| 2026-06-11 23:17 | Christian Grothoff | Note Added: 0028871 | |
| 2026-07-11 15:23 | Styne13 | Note Added: 0029143 | |
| 2026-09-04 20:17 | hank | Note Added: 0029855 | |
| 2026-09-09 23:54 | hank | Note Added: 0029933 | |
| 2026-09-09 23:54 | hank | File Added: Dockerfile-2 |