sandcastle-ng

Scripts for the deployment of Sandcastle (GNU Taler)
Log | Files | Refs | README

Dockerfile (6439B)


      1 FROM docker.io/library/debian:trixie AS base-system
      2 
      3 # FIXMEs:
      4 # - debian packages should be built with a nightly tag
      5 # - the final image contains all build dependencies, this isn't really necessary
      6 # - the final image contains -dev packages, not really necessary
      7 # - GNUnet build dependencies are excessive, maybe we can just build the required libs?
      8 
      9 RUN DEBIAN_FRONTEND=noninteractive \
     10   apt-get update && \
     11   apt-get -y upgrade && \
     12   apt-get --no-install-recommends install -y \
     13   autoconf \
     14   autopoint \
     15   golang \
     16   build-essential \
     17   po-debconf \
     18   debhelper-compat \
     19   apt-utils \
     20   libtool \
     21   texinfo \
     22   libgcrypt-dev \
     23   libidn11-dev \
     24   zlib1g-dev \
     25   libunistring-dev \
     26   libjansson-dev \
     27   git \
     28   libsqlite3-dev \
     29   libpq-dev \
     30   libmicrohttpd-dev \
     31   libsodium-dev \
     32   libqrencode-dev \
     33   zip \
     34   unzip \
     35   jq \
     36   meson \
     37   npm \
     38   openjdk-21-jre-headless \
     39   openjdk-21-jdk-headless \
     40   default-jre-headless \
     41   nano \
     42   procps \
     43   python3-jinja2 \
     44   python3-pip \
     45   python3-poetry-core \
     46   python3-sphinx \
     47   python3-sphinx-rtd-theme \
     48   python3-sphinx-multiversion \
     49   python3-venv \
     50   python3-dev \
     51   nodejs \
     52   iptables \
     53   miniupnpc \
     54   libextractor-dev \
     55   libbluetooth-dev \
     56   libcurl4-gnutls-dev \
     57   libogg-dev \
     58   libopus-dev \
     59   libpulse-dev \
     60   fakeroot \
     61   libzbar-dev \
     62   libltdl-dev \
     63   net-tools \
     64   python3-flask \
     65   python3-flask-babel \
     66   python3-bs4 \
     67   python3-requests \
     68   python3-click \
     69   pybuild-plugin-pyproject \
     70   pandoc \
     71   devscripts \
     72   equivs \
     73   ;
     74 
     75 # FIXME: Try to use debian packages where possible
     76 RUN npm install -g pnpm@10
     77 
     78 COPY buildscripts/sandcastle-build-generic /bin/
     79 
     80 # GNUnet
     81 FROM base-system AS gnunet
     82 COPY buildconfig/gnunet.* /buildconfig/
     83 RUN sandcastle-build-generic gnunet
     84 
     85 # Directory
     86 FROM base-system AS taler-directory
     87 COPY buildconfig/taler-directory.* /buildconfig/
     88 RUN sandcastle-build-generic taler-directory
     89 
     90 # Mailbox
     91 FROM base-system AS taler-mailbox
     92 COPY buildconfig/taler-mailbox.* /buildconfig/
     93 RUN sandcastle-build-generic taler-mailbox
     94 
     95 # Exchange
     96 FROM gnunet as taler-exchange
     97 COPY buildconfig/taler-exchange.* /buildconfig/
     98 RUN sandcastle-build-generic taler-exchange
     99 
    100 # Auditor Webui
    101 FROM base-system as taler-auditor-webui
    102 COPY buildconfig/taler-auditor-webui.* /buildconfig/
    103 RUN sandcastle-build-generic taler-auditor-webui
    104 
    105 # Donau
    106 FROM taler-exchange as donau
    107 COPY buildconfig/donau.* /buildconfig/
    108 RUN sandcastle-build-generic donau
    109 
    110 # Merchant
    111 FROM donau as taler-merchant
    112 COPY buildconfig/taler-merchant.* /buildconfig/
    113 RUN sandcastle-build-generic taler-merchant
    114 
    115 # Paivana (needs libtalermerchant from the merchant)
    116 FROM taler-merchant as paivana-httpd
    117 COPY buildconfig/paivana-httpd.* /buildconfig/
    118 RUN sandcastle-build-generic paivana-httpd
    119 
    120 # Challenger
    121 FROM base-system as challenger-webui
    122 COPY buildconfig/challenger-webui.* /buildconfig/
    123 RUN sandcastle-build-generic challenger-webui
    124 
    125 FROM taler-exchange as challenger
    126 COPY buildconfig/challenger.* /buildconfig/
    127 RUN sandcastle-build-generic challenger
    128 
    129 # Libeufin
    130 FROM base-system as libeufin
    131 COPY buildconfig/libeufin.* /buildconfig/
    132 RUN sandcastle-build-generic libeufin
    133 
    134 # Merchant demos
    135 FROM base-system as taler-merchant-demos
    136 COPY buildconfig/taler-merchant-demos.* /buildconfig/
    137 RUN sandcastle-build-generic taler-merchant-demos
    138 
    139 FROM base-system as taler-wallet-cli
    140 COPY buildconfig/taler-wallet-cli.* /buildconfig/
    141 RUN sandcastle-build-generic taler-wallet-cli
    142 
    143 FROM base-system as taler-harness
    144 COPY buildconfig/taler-harness.* /buildconfig/
    145 RUN sandcastle-build-generic taler-harness
    146 
    147 FROM base-system as taler-merchant-webui
    148 COPY buildconfig/taler-merchant-webui.* /buildconfig/
    149 RUN sandcastle-build-generic taler-merchant-webui
    150 
    151 FROM base-system as turnstile
    152 COPY buildconfig/turnstile.* /buildconfig/
    153 RUN TAG=$(cat /buildconfig/turnstile.tag) && \
    154   cd /opt/ && \
    155   git clone git://git.taler.net/turnstile \
    156   --branch $TAG
    157 
    158 # Final image
    159 FROM base-system as taler-final
    160 RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get -y upgrade && apt-get --no-install-recommends install -y \
    161   gpg
    162 COPY apt/caddy-stable.list /etc/apt/sources.list.d/caddy-stable.list
    163 COPY apt/caddy-stable-archive-keyring.gpg /tmp/caddy-stable-archive-keyring.gpg
    164 RUN gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg /tmp/caddy-stable-archive-keyring.gpg
    165 RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get -y upgrade && apt-get --no-install-recommends install -y \
    166   emacs \
    167   vim \
    168   curl \
    169   postgresql \
    170   bash-completion \
    171   sudo \
    172   less \
    173   caddy \
    174   s-nail \
    175   systemd-coredump \
    176   libnss3-tools \
    177   uuid-runtime \
    178   php \
    179   composer \
    180   php-pgsql \
    181   php-fpm \
    182   php-dom \
    183   php-gd \
    184   php-curl \
    185   ;
    186 
    187 RUN mkdir -p /packages
    188 COPY --from=gnunet /packages/gnunet/* /packages/
    189 COPY --from=taler-directory /packages/taler-directory/* /packages/
    190 COPY --from=taler-mailbox /packages/taler-mailbox/* /packages/
    191 COPY --from=taler-exchange /packages/taler-exchange/* /packages/
    192 COPY --from=taler-merchant /packages/taler-merchant/* /packages/
    193 COPY --from=taler-wallet-cli /packages/taler-wallet-cli/* /packages/
    194 COPY --from=taler-harness /packages/taler-harness/* /packages/
    195 COPY --from=taler-merchant-webui /packages/taler-merchant-webui/* /packages/
    196 COPY --from=taler-auditor-webui /packages/taler-auditor-webui/* /packages/
    197 COPY --from=libeufin /packages/libeufin/* /packages/
    198 COPY --from=taler-merchant-demos /packages/taler-merchant-demos/* /packages/
    199 COPY --from=challenger-webui /packages/challenger-webui/* /packages/
    200 COPY --from=challenger /packages/challenger/* /packages/
    201 COPY --from=donau /packages/donau/* /packages/
    202 COPY --from=paivana-httpd /packages/paivana-httpd/* /packages/
    203 COPY --from=turnstile /opt/turnstile /opt/turnstile
    204 RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get -y upgrade && \
    205   apt-get install --no-install-recommends -y /packages/*.deb
    206 COPY systemd/setup-sandcastle.service /etc/systemd/system/
    207 RUN systemctl enable setup-sandcastle.service
    208 # Disable potentially problem-causing services
    209 RUN systemctl disable postgresql && \
    210     systemctl disable apache2 || true
    211 RUN sed -i /etc/postgresql/17/main/postgresql.conf -e 's/^port[ ]*=.*$/port = 5432/'
    212 # Not ready yet!
    213 #RUN systemctl disable taler-mailbox
    214 
    215 # Disable systemd services that have permission issues
    216 # and thus fail, clobbering the systemd status.
    217 RUN systemctl mask systemd-modules-load.service
    218 RUN systemctl disable proc-sys-fs-binfmt_misc.automount