summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNullptrderef <nullptrderef@proton.me>2024-04-21 16:31:42 +0200
committerNullptrderef <nullptrderef@proton.me>2024-04-21 16:31:42 +0200
commit6f488c910e5639273810c630e12bfbce4360272d (patch)
treea67f55c5f082d41707c2791278c6a6bed79d5849
parente55f6cfe2f24d67ea02b91a1b0d8069c6ce6cd9f (diff)
downloaddeployment-6f488c910e5639273810c630e12bfbce4360272d.tar.gz
deployment-6f488c910e5639273810c630e12bfbce4360272d.tar.bz2
deployment-6f488c910e5639273810c630e12bfbce4360272d.zip
alpine packaging for microhttpd, gnunet and anastasis
-rw-r--r--packaging/docker-alpine/Makefile45
-rw-r--r--packaging/docker-alpine/anastasis-builder.Containerfile19
-rw-r--r--packaging/docker-alpine/anastasis.Containerfile10
-rwxr-xr-xpackaging/docker-alpine/build-files/anastasis-entrypoint.sh31
-rw-r--r--packaging/docker-alpine/builder.Containerfile12
-rwxr-xr-xpackaging/docker-alpine/contrib/build-image.sh5
-rw-r--r--packaging/docker-alpine/libgnunet-builder.Containerfile29
-rw-r--r--packaging/docker-alpine/libgnunet.Containerfile5
-rw-r--r--packaging/docker-alpine/libmicrohttpd-builder.Containerfile18
-rw-r--r--packaging/docker-alpine/libmicrohttpd.Containerfile4
-rw-r--r--packaging/docker-alpine/libtalerexchange.Containerfile8
-rw-r--r--packaging/docker-alpine/libtalermerchant.Containerfile7
-rw-r--r--packaging/docker-alpine/taler-exchange-builder.Containerfile17
-rw-r--r--packaging/docker-alpine/taler-merchant-builder.Containerfile17
14 files changed, 227 insertions, 0 deletions
diff --git a/packaging/docker-alpine/Makefile b/packaging/docker-alpine/Makefile
new file mode 100644
index 0000000..b240d7b
--- /dev/null
+++ b/packaging/docker-alpine/Makefile
@@ -0,0 +1,45 @@
+author = nullptrderef
+
+all: build
+
+build-builder:
+ ./contrib/build-image.sh $(author) gnunet-builder builder
+
+build-libmicrohttpd-builder:
+ ./contrib/build-image.sh $(author) libmicrohttpd libmicrohttpd-builder builder
+
+build-libmicrohttpd: build-libmicrohttpd-builder
+ ./contrib/build-image.sh $(author) libmicrohttpd libmicrohttpd
+
+build-libgnunet-builder:
+ ./contrib/build-image.sh $(author) libgnunet libgnunet-builder builder
+
+build-libgnunet: build-libgnunet-builder
+ ./contrib/build-image.sh $(author) libgnunet libgnunet
+
+build-taler-exchange-builder:
+ ./contrib/build-image.sh $(author) taler-exchange taler-exchange-builder builder
+
+# TODO: regular non-lib taler exchange image
+
+build-libtalerexchange: build-taler-exchange-builder
+ ./contrib/build-image.sh $(author) libtalerexchange libtalerexchange
+
+build-taler-merchant-builder:
+ ./contrib/build-image.sh $(author) taler-merchant taler-merchant-builder builder
+
+build-libtalermerchant: build-taler-merchant-builder
+ ./contrib/build-image.sh $(author) libtalermerchant libtalermerchant
+
+# TODO: regular non-lib taler merchant image
+
+build-anastasis-builder:
+ ./contrib/build-image.sh $(author) anastasis anastasis-builder builder
+
+build-anastasis: build-anastasis-builder
+ ./contrib/build-image.sh $(author) anastasis anastasis
+
+clean:
+ docker rm $(docker image ls -a | awk '{print $1 " " $3}' | awk 'NR > 1' | grep taler-alpine-imaging/ | awk '{print $2}')
+
+build: build-builder build-libmicrohttpd build-libgnunet build-libtalerexchange build-libtalermerchant build-anastasis
diff --git a/packaging/docker-alpine/anastasis-builder.Containerfile b/packaging/docker-alpine/anastasis-builder.Containerfile
new file mode 100644
index 0000000..e66f6af
--- /dev/null
+++ b/packaging/docker-alpine/anastasis-builder.Containerfile
@@ -0,0 +1,19 @@
+FROM taler-alpine-imaging/taler-merchant:builder
+
+WORKDIR /builder
+RUN git clone https://git.taler.net/anastasis.git anastasis --recursive -j 8
+WORKDIR /builder/anastasis
+RUN apk add py3-pip
+RUN pip install htmlark --break-system-packages
+RUN ./bootstrap
+RUN ./configure \
+ --prefix=/prefix/usr \
+ --sysconfdir=/prefix/etc \
+ --mandir=/prefix/usr/share/man \
+ --localstatedir=/prefix/var \
+ --with-microhttpd=/prefix/usr \
+ --with-gnunet=/prefix/usr \
+ --enable-logging=verbose
+
+RUN make -j
+RUN make install
diff --git a/packaging/docker-alpine/anastasis.Containerfile b/packaging/docker-alpine/anastasis.Containerfile
new file mode 100644
index 0000000..e733355
--- /dev/null
+++ b/packaging/docker-alpine/anastasis.Containerfile
@@ -0,0 +1,10 @@
+FROM taler-alpine-imaging/anastasis:builder AS builder
+COPY ./build-files/anastasis-entrypoint.sh /prefix/usr/bin/anastasis-docker-entrypoint
+
+FROM taler-alpine-imaging/libtalermerchant:latest
+COPY --from=builder /prefix/* /
+
+VOLUME [ "/data", "/etc/anastasis" ]
+EXPOSE 9977
+
+CMD [ "anastasis-docker-entrypoint" ]
diff --git a/packaging/docker-alpine/build-files/anastasis-entrypoint.sh b/packaging/docker-alpine/build-files/anastasis-entrypoint.sh
new file mode 100755
index 0000000..e33f297
--- /dev/null
+++ b/packaging/docker-alpine/build-files/anastasis-entrypoint.sh
@@ -0,0 +1,31 @@
+#!/usr/bin/env sh
+set -e
+
+if ! [ -d "/etc/anastasis" ]; then
+ echo -e "
+\x1b[0;31;1mFATAL\x1b[0m Anastasis-Docker needs /etc/anastasis mounted.
+ If you're calling docker directly, pass '-v ./anastasis-config:/etc/anastasis' to docker run
+ If you're using a docker compose, add the below to the service:
+ volumes:
+ - ./anastasis-config:/etc/anastasis:rw" 1>&2;
+ exit 1;
+fi;
+if ! [ -f "/etc/anastasis/anastasis.conf" ]; then
+ echo -e "\x1b[0;33;1mWARN\x1b[0m Anastasis-Docker needs /etc/anastasis/anastasis.conf.
+ If you're seeing this for the first time after setting up a volume binding, simply continue by modifying your config. A config was just created for you! :)
+ Otherwise, see below for information on adding a volume binding:
+ If you're calling docker directly, pass '-v ./anastasis-config:/etc/anastasis' to docker run
+ If you're using a docker compose, add the below to the service:
+ volumes:
+ - ./anastasis-config:/etc/anastasis:rw" 1>&2;
+ echo '[anastasis]
+SERVE = tcp
+PORT = 9977
+
+[stasis-postgres]
+CONFIG = postgres://user:pass@192.168.1.123/db
+' >
+fi;
+
+anastasis-dbinit -c /etc/anastasis/anastasis.conf
+anastasis-httpd -c /etc/anastasis/anastasis.conf $@
diff --git a/packaging/docker-alpine/builder.Containerfile b/packaging/docker-alpine/builder.Containerfile
new file mode 100644
index 0000000..e38b0b1
--- /dev/null
+++ b/packaging/docker-alpine/builder.Containerfile
@@ -0,0 +1,12 @@
+FROM alpine:latest
+
+RUN <<EOT
+apk update && \
+ apk add --no-cache git make cmake automake autoconf libtool clang texinfo gnutls-dev curl-dev coreutils && \
+ mkdir /prefix -p
+EOT
+
+ENV CC=clang
+ENV CFLAGS="-Os"
+
+WORKDIR /builder
diff --git a/packaging/docker-alpine/contrib/build-image.sh b/packaging/docker-alpine/contrib/build-image.sh
new file mode 100755
index 0000000..6780587
--- /dev/null
+++ b/packaging/docker-alpine/contrib/build-image.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eax
+
+docker buildx build -t "taler-alpine-imaging/$2:${4:-latest}" -f "$3".Containerfile .
+docker image tag "taler-alpine-imaging/$2:${4:-latest}" "$1/$2":${4:-latest}
diff --git a/packaging/docker-alpine/libgnunet-builder.Containerfile b/packaging/docker-alpine/libgnunet-builder.Containerfile
new file mode 100644
index 0000000..1e9cf4e
--- /dev/null
+++ b/packaging/docker-alpine/libgnunet-builder.Containerfile
@@ -0,0 +1,29 @@
+FROM taler-alpine-imaging/libmicrohttpd:builder
+
+WORKDIR /builder
+RUN git clone https://git.gnunet.org/gnunet.git gnunet --recursive -j 8
+WORKDIR /builder/gnunet
+# instead of bootstrap for a more minimal build
+RUN git submodule update --init --force --remote
+
+RUN apk add gettext gettext-dev gettext-static gettext-libs py3-gettext libgcrypt libgcrypt-dev jansson jansson-dev libsodium libsodium-dev libunistring libunistring-dev libpq libpq-dev
+ENV AUTOPOINT=autopoint
+
+RUN mkdir -p doc/handbook/texinfo/
+RUN touch doc/handbook/texinfo/gnunet.texi
+
+RUN autoreconf -fi
+RUN ./configure \
+ --prefix=/prefix/usr \
+ --with-microhttpd=/prefix/usr \
+ --sysconfdir=/prefix/etc \
+ --mandir=/prefix/usr/share/man \
+ --localstatedir=/prefix/var \
+ --disable-poisoning \
+ --enable-logging=verbose
+
+WORKDIR /builder/gnunet/src/include
+RUN make install
+WORKDIR /builder/gnunet/src/lib
+RUN make -j
+RUN make install
diff --git a/packaging/docker-alpine/libgnunet.Containerfile b/packaging/docker-alpine/libgnunet.Containerfile
new file mode 100644
index 0000000..a635dd3
--- /dev/null
+++ b/packaging/docker-alpine/libgnunet.Containerfile
@@ -0,0 +1,5 @@
+FROM taler-alpine-imaging/libgnunet:builder AS builder
+
+FROM taler-alpine-imaging/libmicrohttpd:latest
+RUN apk add --no-cache libgcrypt jansson gettext libsodium libunistring libpq curl gnutls libtool
+COPY --from=builder /prefix/* /
diff --git a/packaging/docker-alpine/libmicrohttpd-builder.Containerfile b/packaging/docker-alpine/libmicrohttpd-builder.Containerfile
new file mode 100644
index 0000000..bfce7b0
--- /dev/null
+++ b/packaging/docker-alpine/libmicrohttpd-builder.Containerfile
@@ -0,0 +1,18 @@
+FROM taler-alpine-imaging/gnunet-builder:latest
+
+WORKDIR /builder/libmicrohttpd
+RUN git clone https://git.gnunet.org/libmicrohttpd.git .
+RUN ./bootstrap
+RUN ./configure \
+ --prefix=/prefix/usr \
+ --sysconfdir=/prefix/etc \
+ --mandir=/prefix/usr/share/man \
+ --infodir=/prefix/usr/share/info \
+ --disable-thread-names \
+ --enable-largefile \
+ --enable-curl \
+ --enable-https \
+ --enable-messages
+RUN make -j
+RUN make check
+RUN make install
diff --git a/packaging/docker-alpine/libmicrohttpd.Containerfile b/packaging/docker-alpine/libmicrohttpd.Containerfile
new file mode 100644
index 0000000..f407498
--- /dev/null
+++ b/packaging/docker-alpine/libmicrohttpd.Containerfile
@@ -0,0 +1,4 @@
+FROM taler-alpine-imaging/libmicrohttpd:builder AS builder
+
+FROM alpine:latest
+COPY --from=builder /prefix/* /
diff --git a/packaging/docker-alpine/libtalerexchange.Containerfile b/packaging/docker-alpine/libtalerexchange.Containerfile
new file mode 100644
index 0000000..046dcd4
--- /dev/null
+++ b/packaging/docker-alpine/libtalerexchange.Containerfile
@@ -0,0 +1,8 @@
+FROM taler-alpine-imaging/taler-exchange:builder AS builder
+
+FROM alpine AS builder2
+COPY --from=builder /prefix/usr/lib/* /prefix/usr/lib
+# RUN rm -rf /prefix/lib/taler_plugin_*
+
+FROM taler-alpine-imaging/libgnunet:latest
+COPY --from=builder2 /prefix/* /
diff --git a/packaging/docker-alpine/libtalermerchant.Containerfile b/packaging/docker-alpine/libtalermerchant.Containerfile
new file mode 100644
index 0000000..e1779dc
--- /dev/null
+++ b/packaging/docker-alpine/libtalermerchant.Containerfile
@@ -0,0 +1,7 @@
+FROM taler-alpine-imaging/taler-merchant:builder AS builder
+
+FROM alpine AS builder2
+COPY --from=builder /prefix/usr/lib/* /prefix/usr/lib
+
+FROM taler-alpine-imaging/libtalerexchange:latest
+COPY --from=builder2 /prefix/* /
diff --git a/packaging/docker-alpine/taler-exchange-builder.Containerfile b/packaging/docker-alpine/taler-exchange-builder.Containerfile
new file mode 100644
index 0000000..4e7da93
--- /dev/null
+++ b/packaging/docker-alpine/taler-exchange-builder.Containerfile
@@ -0,0 +1,17 @@
+FROM taler-alpine-imaging/libgnunet:builder
+
+WORKDIR /builder
+RUN git clone https://git.taler.net/exchange.git exchange --recursive -j 8
+WORKDIR /builder/exchange
+RUN apk add pandoc recutils py3-jinja2 jq
+RUN ./bootstrap
+RUN ./configure \
+ --prefix=/prefix/usr \
+ --sysconfdir=/prefix/etc \
+ --mandir=/prefix/usr/share/man \
+ --localstatedir=/prefix/var \
+ --with-microhttpd=/prefix/usr \
+ --enable-logging=verbose
+
+RUN make -j
+RUN make install
diff --git a/packaging/docker-alpine/taler-merchant-builder.Containerfile b/packaging/docker-alpine/taler-merchant-builder.Containerfile
new file mode 100644
index 0000000..0a73a3e
--- /dev/null
+++ b/packaging/docker-alpine/taler-merchant-builder.Containerfile
@@ -0,0 +1,17 @@
+FROM taler-alpine-imaging/taler-exchange:builder
+
+WORKDIR /builder
+RUN git clone https://git.taler.net/merchant.git merchant --recursive -j 8
+WORKDIR /builder/merchant
+RUN apk add libqrencode libqrencode-dev
+RUN ./bootstrap
+RUN ./configure \
+ --prefix=/prefix/usr \
+ --sysconfdir=/prefix/etc \
+ --mandir=/prefix/usr/share/man \
+ --localstatedir=/prefix/var \
+ --with-microhttpd=/prefix/usr \
+ --enable-logging=verbose
+
+RUN make -j
+RUN make install