From c04382d200ba5294a33d35d2540c91d4128aece0 Mon Sep 17 00:00:00 2001 From: Simon Beginn Date: Thu, 10 Sep 2020 15:52:50 +0200 Subject: [PATCH] Added python3 multiarch --- .../{Dockerfile => Dockerfile.amd64} | 0 docker/docker-py3-kms/Dockerfile.arm32v7 | 49 +++++++++++++++++++ docker/docker-py3-kms/Dockerfile.arm64v8 | 49 +++++++++++++++++++ docker/docker-py3-kms/build-py3-kms.sh | 5 +- docker/docker-py3-kms/hooks/post_push | 9 ++++ docker/docker-py3-kms/hooks/pre_build | 5 ++ .../multi-arch-manifest-python3.yaml | 16 ++++++ 7 files changed, 129 insertions(+), 4 deletions(-) rename docker/docker-py3-kms/{Dockerfile => Dockerfile.amd64} (100%) create mode 100644 docker/docker-py3-kms/Dockerfile.arm32v7 create mode 100644 docker/docker-py3-kms/Dockerfile.arm64v8 create mode 100644 docker/docker-py3-kms/hooks/post_push create mode 100755 docker/docker-py3-kms/hooks/pre_build create mode 100644 docker/docker-py3-kms/multi-arch-manifest-python3.yaml diff --git a/docker/docker-py3-kms/Dockerfile b/docker/docker-py3-kms/Dockerfile.amd64 similarity index 100% rename from docker/docker-py3-kms/Dockerfile rename to docker/docker-py3-kms/Dockerfile.amd64 diff --git a/docker/docker-py3-kms/Dockerfile.arm32v7 b/docker/docker-py3-kms/Dockerfile.arm32v7 new file mode 100644 index 0000000..6e25c96 --- /dev/null +++ b/docker/docker-py3-kms/Dockerfile.arm32v7 @@ -0,0 +1,49 @@ +# Prepare the multiarch env +FROM alpine AS builder +RUN apk add curl && curl -L "https://github.com/balena-io/qemu/releases/download/v4.0.0%2Bbalena2/qemu-4.0.0.balena2-arm.tar.gz" | tar zxvf - -C . --strip-components 1 + +# Switch to the target image +FROM alpine:3.12 + +# Import qemu from the preparation +COPY --from=builder qemu-arm-static /usr/bin + +ENV IP 0.0.0.0 +ENV PORT 1688 +ENV EPID "" +ENV LCID 1033 +ENV CLIENT_COUNT 26 +ENV ACTIVATION_INTERVAL 120 +ENV RENEWAL_INTERVAL 10080 +ENV SQLITE false +ENV HWID "364F463A8863D35F" +ENV LOGLEVEL ERROR +ENV LOGFILE /var/log/pykms_logserver.log +ENV LOGSIZE "" + +COPY start.sh /usr/bin/start.sh + +RUN apk add --no-cache --update \ + bash \ + git \ + py3-argparse \ + py3-flask \ + py3-pygments \ + python3-tkinter \ + sqlite-libs \ + py3-pip && \ + git clone https://github.com/SystemRage/py-kms.git /tmp/py-kms && \ + git clone https://github.com/coleifer/sqlite-web.git /tmp/sqlite_web && \ + mv /tmp/py-kms/py-kms /home/ && \ + mv /tmp/sqlite_web/sqlite_web /home/ && \ + rm -rf /tmp/py-kms && \ + rm -rf /tmp/sqlite_web && \ + pip3 install peewee tzlocal pysqlite3 && \ + chmod a+x /usr/bin/start.sh && \ + apk del git + +WORKDIR /home/py-kms + +EXPOSE ${PORT}/tcp + +ENTRYPOINT ["/usr/bin/start.sh"] diff --git a/docker/docker-py3-kms/Dockerfile.arm64v8 b/docker/docker-py3-kms/Dockerfile.arm64v8 new file mode 100644 index 0000000..561ea3b --- /dev/null +++ b/docker/docker-py3-kms/Dockerfile.arm64v8 @@ -0,0 +1,49 @@ +# Prepare the multiarch env +FROM alpine AS builder +RUN apk add curl && curl -L "https://github.com/balena-io/qemu/releases/download/v4.0.0%2Bbalena2/qemu-4.0.0.balena2-aarch64.tar.gz" | tar zxvf - -C . --strip-components 1 + +# Switch to the target image +FROM alpine:3.12 + +# Import qemu from the preparation +COPY --from=builder qemu-aarch64-static /usr/bin + +ENV IP 0.0.0.0 +ENV PORT 1688 +ENV EPID "" +ENV LCID 1033 +ENV CLIENT_COUNT 26 +ENV ACTIVATION_INTERVAL 120 +ENV RENEWAL_INTERVAL 10080 +ENV SQLITE false +ENV HWID "364F463A8863D35F" +ENV LOGLEVEL ERROR +ENV LOGFILE /var/log/pykms_logserver.log +ENV LOGSIZE "" + +COPY start.sh /usr/bin/start.sh + +RUN apk add --no-cache --update \ + bash \ + git \ + py3-argparse \ + py3-flask \ + py3-pygments \ + python3-tkinter \ + sqlite-libs \ + py3-pip && \ + git clone https://github.com/SystemRage/py-kms.git /tmp/py-kms && \ + git clone https://github.com/coleifer/sqlite-web.git /tmp/sqlite_web && \ + mv /tmp/py-kms/py-kms /home/ && \ + mv /tmp/sqlite_web/sqlite_web /home/ && \ + rm -rf /tmp/py-kms && \ + rm -rf /tmp/sqlite_web && \ + pip3 install peewee tzlocal pysqlite3 && \ + chmod a+x /usr/bin/start.sh && \ + apk del git + +WORKDIR /home/py-kms + +EXPOSE ${PORT}/tcp + +ENTRYPOINT ["/usr/bin/start.sh"] diff --git a/docker/docker-py3-kms/build-py3-kms.sh b/docker/docker-py3-kms/build-py3-kms.sh index e55eb3b..616f1f5 100755 --- a/docker/docker-py3-kms/build-py3-kms.sh +++ b/docker/docker-py3-kms/build-py3-kms.sh @@ -1,4 +1 @@ -docker stop py3-kms -docker rm py3-kms -docker image rm pykms/pykms:py3-kms -docker build -t pykms/pykms:py3-kms . +docker build -t pykms/pykms:py3-kms . --file Dockerfile.amd64 diff --git a/docker/docker-py3-kms/hooks/post_push b/docker/docker-py3-kms/hooks/post_push new file mode 100644 index 0000000..698e3ce --- /dev/null +++ b/docker/docker-py3-kms/hooks/post_push @@ -0,0 +1,9 @@ +#!/bin/bash + +# Use manifest-tool to create the manifest, given the experimental +# "docker manifest" command isn't available yet on Docker Hub. + +curl -Lo manifest-tool "https://github.com/estesp/manifest-tool/releases/download/v1.0.2/manifest-tool-linux-amd64" +chmod +x manifest-tool + +./manifest-tool push from-spec multi-arch-manifest-python3.yaml diff --git a/docker/docker-py3-kms/hooks/pre_build b/docker/docker-py3-kms/hooks/pre_build new file mode 100755 index 0000000..0a94f7e --- /dev/null +++ b/docker/docker-py3-kms/hooks/pre_build @@ -0,0 +1,5 @@ +#!/bin/bash + +# Register qemu-*-static for all supported processors except the +# current one, but also remove all registered binfmt_misc before +docker run --rm --privileged multiarch/qemu-user-static:register --reset diff --git a/docker/docker-py3-kms/multi-arch-manifest-python3.yaml b/docker/docker-py3-kms/multi-arch-manifest-python3.yaml new file mode 100644 index 0000000..7e5ec39 --- /dev/null +++ b/docker/docker-py3-kms/multi-arch-manifest-python3.yaml @@ -0,0 +1,16 @@ +image: realsimonmicro/py-kms-multiarch:python3 +manifests: + - image: realsimonmicro/py-kms-multiarch:python3-amd64 + platform: + architecture: amd64 + os: linux + - image: realsimonmicro/py-kms-multiarch:python3-arm32v7 + platform: + architecture: arm + os: linux + variant: v7 + - image: realsimonmicro/py-kms-multiarch:python3-arm64v8 + platform: + architecture: arm64 + os: linux + variant: v8