View Issue Details

IDProjectCategoryView StatusLast Update
0010163Talermerchant backendpublic2025-07-08 23:12
Reporterhank Assigned To 
PrioritynormalSeverityfeatureReproducibilityalways
Status newResolutionopen 
Product Version1.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

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