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