sandcastle-ng

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

Dockerfile (5904B)


      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 
     72 # FIXME: Try to use debian packages where possible and otherwise really use
     73 # a venv or per-user installation of the package.
     74 RUN pip3 install --break-system-packages sphinx-book-theme sphinx-markdown-builder sphinxcontrib-jquery
     75 RUN npm install -g pnpm@10
     76 COPY buildscripts/sandcastle-build-generic /bin/
     77 
     78 # GNUnet
     79 FROM base-system AS gnunet
     80 COPY buildconfig/gnunet.* /buildconfig/
     81 RUN sandcastle-build-generic gnunet
     82 
     83 # Directory
     84 FROM base-system AS taler-directory
     85 COPY buildconfig/taler-directory.* /buildconfig/
     86 RUN sandcastle-build-generic taler-directory
     87 
     88 # Mailbox
     89 FROM base-system AS taler-mailbox
     90 COPY buildconfig/taler-mailbox.* /buildconfig/
     91 RUN sandcastle-build-generic taler-mailbox
     92 
     93 # Exchange
     94 FROM gnunet as taler-exchange
     95 COPY buildconfig/taler-exchange.* /buildconfig/
     96 RUN sandcastle-build-generic taler-exchange
     97 
     98 # Donau
     99 FROM taler-exchange as donau
    100 COPY buildconfig/donau.* /buildconfig/
    101 RUN sandcastle-build-generic donau
    102 
    103 # Merchant
    104 FROM donau as taler-merchant
    105 COPY buildconfig/taler-merchant.* /buildconfig/
    106 RUN sandcastle-build-generic taler-merchant
    107 
    108 # Challenger
    109 FROM taler-exchange as challenger
    110 COPY buildconfig/challenger.* /buildconfig/
    111 RUN sandcastle-build-generic challenger
    112 
    113 # Libeufin
    114 FROM base-system as libeufin
    115 COPY buildconfig/libeufin.* /buildconfig/
    116 RUN sandcastle-build-generic libeufin
    117 
    118 # Merchant demos
    119 FROM base-system as taler-merchant-demos
    120 COPY buildconfig/taler-merchant-demos.* /buildconfig/
    121 RUN sandcastle-build-generic taler-merchant-demos
    122 
    123 FROM base-system as taler-wallet-cli
    124 COPY buildconfig/taler-wallet-cli.* /buildconfig/
    125 RUN sandcastle-build-generic taler-wallet-cli
    126 
    127 FROM base-system as taler-harness
    128 COPY buildconfig/taler-harness.* /buildconfig/
    129 RUN sandcastle-build-generic taler-harness
    130 
    131 FROM base-system as taler-merchant-webui
    132 COPY buildconfig/taler-merchant-webui.* /buildconfig/
    133 RUN sandcastle-build-generic taler-merchant-webui
    134 
    135 FROM base-system as turnstile
    136 COPY buildconfig/turnstile.* /buildconfig/
    137 RUN TAG=$(cat /buildconfig/turnstile.tag) && \
    138   cd /opt/ && \
    139   git clone git://git.taler.net/turnstile \
    140   --branch $TAG
    141 
    142 # Final image
    143 FROM base-system as taler-final
    144 RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get -y upgrade && apt-get --no-install-recommends install -y \
    145   gpg
    146 COPY apt/caddy-stable.list /etc/apt/sources.list.d/caddy-stable.list
    147 COPY apt/caddy-stable-archive-keyring.gpg /tmp/caddy-stable-archive-keyring.gpg
    148 RUN gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg /tmp/caddy-stable-archive-keyring.gpg
    149 RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get -y upgrade && apt-get --no-install-recommends install -y \
    150   emacs \
    151   vim \
    152   curl \
    153   postgresql \
    154   bash-completion \
    155   sudo \
    156   less \
    157   caddy \
    158   s-nail \
    159   systemd-coredump \
    160   libnss3-tools \
    161   uuid-runtime \
    162   php \
    163   composer \
    164   php-pgsql \
    165   php-fpm \
    166   php-dom \
    167   php-gd \
    168   php-curl \
    169   ;
    170 
    171 RUN mkdir -p /packages
    172 COPY --from=gnunet /packages/gnunet/* /packages/
    173 COPY --from=taler-directory /packages/taler-directory/* /packages/
    174 COPY --from=taler-mailbox /packages/taler-mailbox/* /packages/
    175 COPY --from=taler-exchange /packages/taler-exchange/* /packages/
    176 COPY --from=taler-merchant /packages/taler-merchant/* /packages/
    177 COPY --from=taler-wallet-cli /packages/taler-wallet-cli/* /packages/
    178 COPY --from=taler-harness /packages/taler-harness/* /packages/
    179 COPY --from=taler-merchant-webui /packages/taler-merchant-webui/* /packages/
    180 COPY --from=libeufin /packages/libeufin/* /packages/
    181 COPY --from=taler-merchant-demos /packages/taler-merchant-demos/* /packages/
    182 COPY --from=challenger /packages/challenger/* /packages/
    183 COPY --from=donau /packages/donau/* /packages/
    184 COPY --from=turnstile /opt/turnstile /opt/turnstile
    185 RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get -y upgrade && \
    186   apt-get install --no-install-recommends -y /packages/*.deb
    187 COPY systemd/setup-sandcastle.service /etc/systemd/system/
    188 RUN systemctl enable setup-sandcastle.service
    189 # Disable potentially problem-causing services
    190 RUN systemctl disable postgresql && \
    191     systemctl disable apache2 || true
    192 RUN sed -i /etc/postgresql/17/main/postgresql.conf -e 's/^port[ ]*=.*$/port = 5432/'
    193 # Not ready yet!
    194 #RUN systemctl disable taler-mailbox
    195 
    196 # Disable systemd services that have permission issues
    197 # and thus fail, clobbering the systemd status.
    198 RUN systemctl mask systemd-modules-load.service
    199 RUN systemctl disable proc-sys-fs-binfmt_misc.automount