Skip to content

Commit

Permalink
Docker multiarch (#93)
Browse files Browse the repository at this point in the history
* Reshot screenshots on an english system (also added GIMP files)

* Added multiarch to minimal

* Added amd64 suffix

* Stripped down file (comments are inside the README anyways)

* Added python3 multiarch

* Corrected missing arch specs

* Added older arm version

* Added architecture explanation

* Pointed manifests to official image

* Removed xcfc files as requested in #93 (comment)
  • Loading branch information
simonmicro authored Oct 3, 2020
1 parent dda3c68 commit 5ffcbb8
Show file tree
Hide file tree
Showing 20 changed files with 425 additions and 125 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a minimized version from docker/docker-py3-kms/Dockerfile without SQLite support to further reduce image size

FROM alpine:3.8
FROM alpine:3.12

ENV IP 0.0.0.0
ENV PORT 1688
Expand Down
44 changes: 44 additions & 0 deletions docker/docker-py3-kms-minimal/Dockerfile.arm32v6
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# This is a minimized version from docker/docker-py3-kms/Dockerfile without SQLite support to further reduce image size

# 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 arm32v6/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 HWID "RANDOM"
ENV LOGLEVEL INFO
ENV LOGFILE /var/log/pykms_logserver.log
ENV LOGSIZE ""

RUN apk add --no-cache --update \
bash \
git \
py3-argparse \
py3-flask \
py3-pygments \
python3-tkinter \
sqlite-libs \
py3-pip && \
pip3 install peewee tzlocal && \
git clone https://github.com/SystemRage/py-kms/ /tmp/py-kms && \
mv /tmp/py-kms/py-kms /home/ && \
rm -rf /tmp/py-kms && \
apk del git

WORKDIR /home/py-kms

EXPOSE ${PORT}/tcp

ENTRYPOINT /usr/bin/python3 pykms_Server.py ${IP} ${PORT} -l ${LCID} -c ${CLIENT_COUNT} -a ${ACTIVATION_INTERVAL} -r ${RENEWAL_INTERVAL} -w ${HWID} -V ${LOGLEVEL} -F ${LOGFILE}
44 changes: 44 additions & 0 deletions docker/docker-py3-kms-minimal/Dockerfile.arm32v7
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# This is a minimized version from docker/docker-py3-kms/Dockerfile without SQLite support to further reduce image size

# 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 arm32v7/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 HWID "RANDOM"
ENV LOGLEVEL INFO
ENV LOGFILE /var/log/pykms_logserver.log
ENV LOGSIZE ""

RUN apk add --no-cache --update \
bash \
git \
py3-argparse \
py3-flask \
py3-pygments \
python3-tkinter \
sqlite-libs \
py3-pip && \
pip3 install peewee tzlocal && \
git clone https://github.com/SystemRage/py-kms/ /tmp/py-kms && \
mv /tmp/py-kms/py-kms /home/ && \
rm -rf /tmp/py-kms && \
apk del git

WORKDIR /home/py-kms

EXPOSE ${PORT}/tcp

ENTRYPOINT /usr/bin/python3 pykms_Server.py ${IP} ${PORT} -l ${LCID} -c ${CLIENT_COUNT} -a ${ACTIVATION_INTERVAL} -r ${RENEWAL_INTERVAL} -w ${HWID} -V ${LOGLEVEL} -F ${LOGFILE}
44 changes: 44 additions & 0 deletions docker/docker-py3-kms-minimal/Dockerfile.arm64v8
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# This is a minimized version from docker/docker-py3-kms/Dockerfile without SQLite support to further reduce image size

# 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 arm64v8/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 HWID "RANDOM"
ENV LOGLEVEL INFO
ENV LOGFILE /var/log/pykms_logserver.log
ENV LOGSIZE ""

RUN apk add --no-cache --update \
bash \
git \
py3-argparse \
py3-flask \
py3-pygments \
python3-tkinter \
sqlite-libs \
py3-pip && \
pip3 install peewee tzlocal && \
git clone https://github.com/SystemRage/py-kms/ /tmp/py-kms && \
mv /tmp/py-kms/py-kms /home/ && \
rm -rf /tmp/py-kms && \
apk del git

WORKDIR /home/py-kms

EXPOSE ${PORT}/tcp

ENTRYPOINT /usr/bin/python3 pykms_Server.py ${IP} ${PORT} -l ${LCID} -c ${CLIENT_COUNT} -a ${ACTIVATION_INTERVAL} -r ${RENEWAL_INTERVAL} -w ${HWID} -V ${LOGLEVEL} -F ${LOGFILE}
10 changes: 10 additions & 0 deletions docker/docker-py3-kms-minimal/hooks/post_push
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/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-latest.yaml
./manifest-tool push from-spec multi-arch-manifest-minimal.yaml
5 changes: 5 additions & 0 deletions docker/docker-py3-kms-minimal/hooks/pre_build
Original file line number Diff line number Diff line change
@@ -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
21 changes: 21 additions & 0 deletions docker/docker-py3-kms-minimal/multi-arch-manifest-latest.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
image: pykmsorg/py-kms:latest
manifests:
- image: pykmsorg/py-kms:minimal-amd64
platform:
architecture: amd64
os: linux
- image: pykmsorg/py-kms:minimal-arm32v6
platform:
architecture: arm
os: linux
variant: v6
- image: pykmsorg/py-kms:minimal-arm32v7
platform:
architecture: arm
os: linux
variant: v7
- image: pykmsorg/py-kms:minimal-arm64v8
platform:
architecture: arm64
os: linux
variant: v8
21 changes: 21 additions & 0 deletions docker/docker-py3-kms-minimal/multi-arch-manifest-minimal.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
image: pykmsorg/py-kms:minimal
manifests:
- image: pykmsorg/py-kms:minimal-amd64
platform:
architecture: amd64
os: linux
- image: pykmsorg/py-kms:minimal-arm32v6
platform:
architecture: arm
os: linux
variant: v6
- image: pykmsorg/py-kms:minimal-arm32v7
platform:
architecture: arm
os: linux
variant: v7
- image: pykmsorg/py-kms:minimal-arm64v8
platform:
architecture: arm64
os: linux
variant: v8
118 changes: 0 additions & 118 deletions docker/docker-py3-kms/Dockerfile

This file was deleted.

41 changes: 41 additions & 0 deletions docker/docker-py3-kms/Dockerfile.amd64
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
FROM alpine:3.12

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"]
Loading

0 comments on commit 5ffcbb8

Please sign in to comment.