diff options
author | Nullptrderef <nullptrderef@proton.me> | 2024-04-21 16:31:42 +0200 |
---|---|---|
committer | Nullptrderef <nullptrderef@proton.me> | 2024-04-21 16:31:42 +0200 |
commit | 6f488c910e5639273810c630e12bfbce4360272d (patch) | |
tree | a67f55c5f082d41707c2791278c6a6bed79d5849 | |
parent | e55f6cfe2f24d67ea02b91a1b0d8069c6ce6cd9f (diff) | |
download | deployment-6f488c910e5639273810c630e12bfbce4360272d.tar.gz deployment-6f488c910e5639273810c630e12bfbce4360272d.tar.bz2 deployment-6f488c910e5639273810c630e12bfbce4360272d.zip |
alpine packaging for microhttpd, gnunet and anastasis
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 |