View Issue Details

IDProjectCategoryView StatusLast Update
0010163Talermerchant backendpublic2026-06-11 23:17
Reporterhank Assigned To 
PrioritynormalSeverityfeatureReproducibilityalways
Status acknowledgedResolutionopen 
Product Version1.0 
Target Versionpost-2.0 
Summary0010163: Dockerfile, docker-compose.yaml and Kubernetes files
DescriptionDockerfile 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
TagsNo 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
docker-compose.yaml (3,330 bytes)   
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
Dockerfile (1,451 bytes)   
k8s.tar (20,480 bytes)

Activities

Christian Grothoff

2026-06-11 23:17

manager   ~0028871

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...

Issue History

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