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