From 6f488c910e5639273810c630e12bfbce4360272d Mon Sep 17 00:00:00 2001 From: Nullptrderef Date: Sun, 21 Apr 2024 16:31:42 +0200 Subject: alpine packaging for microhttpd, gnunet and anastasis --- packaging/docker-alpine/Makefile | 45 ++++++++++++++++++++++ .../docker-alpine/anastasis-builder.Containerfile | 19 +++++++++ packaging/docker-alpine/anastasis.Containerfile | 10 +++++ .../build-files/anastasis-entrypoint.sh | 31 +++++++++++++++ packaging/docker-alpine/builder.Containerfile | 12 ++++++ packaging/docker-alpine/contrib/build-image.sh | 5 +++ .../docker-alpine/libgnunet-builder.Containerfile | 29 ++++++++++++++ packaging/docker-alpine/libgnunet.Containerfile | 5 +++ .../libmicrohttpd-builder.Containerfile | 18 +++++++++ .../docker-alpine/libmicrohttpd.Containerfile | 4 ++ .../docker-alpine/libtalerexchange.Containerfile | 8 ++++ .../docker-alpine/libtalermerchant.Containerfile | 7 ++++ .../taler-exchange-builder.Containerfile | 17 ++++++++ .../taler-merchant-builder.Containerfile | 17 ++++++++ 14 files changed, 227 insertions(+) create mode 100644 packaging/docker-alpine/Makefile create mode 100644 packaging/docker-alpine/anastasis-builder.Containerfile create mode 100644 packaging/docker-alpine/anastasis.Containerfile create mode 100755 packaging/docker-alpine/build-files/anastasis-entrypoint.sh create mode 100644 packaging/docker-alpine/builder.Containerfile create mode 100755 packaging/docker-alpine/contrib/build-image.sh create mode 100644 packaging/docker-alpine/libgnunet-builder.Containerfile create mode 100644 packaging/docker-alpine/libgnunet.Containerfile create mode 100644 packaging/docker-alpine/libmicrohttpd-builder.Containerfile create mode 100644 packaging/docker-alpine/libmicrohttpd.Containerfile create mode 100644 packaging/docker-alpine/libtalerexchange.Containerfile create mode 100644 packaging/docker-alpine/libtalermerchant.Containerfile create mode 100644 packaging/docker-alpine/taler-exchange-builder.Containerfile create mode 100644 packaging/docker-alpine/taler-merchant-builder.Containerfile 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 <