Add MistServer 3.11 - #20366
Conversation
15bbc87 to
c2b3bb3
Compare
This comment has been minimized.
This comment has been minimized.
|
Using a Docker-specific repository now that contains Dockerfiles for different versions, instead of directly including the source leading to jobs failing. The PR should be ready for review. |
|
Hi again, can this PR be looked at? |
|
I've taken a first pass at review, and these are my very high-level notes from it: At first glance, the multi-stage build doesn't seem to be one of the cases in https://github.com/docker-library/faq#multi-stage-builds (using That's a lot of Explicitly using Building mbedtls from source is a little eyebrow-raising -- Alpine contains the same version 3.6.5, is there a reason it isn't used? (https://pkgs.alpinelinux.org/package/v3.23/main/x86_64/mbedtls-dev) Having such long single-line Using Using Using Ideally the download of the source code would have some kind of verification, but that's a little hard with the source code tarball being generated by GitHub directly. 😔 |
Diff for 2596b6e:diff --git a/_bashbrew-arches b/_bashbrew-arches
index 8b13789..e85a97f 100644
--- a/_bashbrew-arches
+++ b/_bashbrew-arches
@@ -1 +1,2 @@
-
+amd64
+arm64v8
diff --git a/_bashbrew-cat b/_bashbrew-cat
index bdfae4a..02b2505 100644
--- a/_bashbrew-cat
+++ b/_bashbrew-cat
@@ -1 +1,9 @@
-Maintainers: New Image! :D (@docker-library-bot)
+Maintainers: Jaron Viëtor <jaron.vietor@ddvtech.com> (@Thulinma), Marco van Dijk <marco.van.dijk@ddvtech.com> (@stronk-dev), Carina van der Meer <carina.van.der.meer@ddvtech.com> (@thoronwen), Balder Viëtor <balder.vietor@ddvtech.com> (@Rokamun), Ramkoemar Bhoera <ramkoemar.bhoera@ddvtech.com> (@ramkoemar), Juno Jense <unit-stamp-sled@duck.com> (@junojense)
+GitRepo: https://github.com/DDVTECH/mistserver-docker-builder.git
+GitFetch: refs/heads/main
+GitCommit: 6ad8faed85bf59bc95173fd9832f1867df55a278
+
+Tags: latest, 3.11.1
+Architectures: amd64, arm64v8
+Directory: 3.11.1
+File: Dockerfile.mistserver
diff --git a/_bashbrew-list b/_bashbrew-list
index e69de29..41da094 100644
--- a/_bashbrew-list
+++ b/_bashbrew-list
@@ -0,0 +1,2 @@
+mistserver:3.11.1
+mistserver:latest
diff --git a/_bashbrew-list-build-order b/_bashbrew-list-build-order
index e69de29..b74bea6 100644
--- a/_bashbrew-list-build-order
+++ b/_bashbrew-list-build-order
@@ -0,0 +1 @@
+mistserver:3.11.1
diff --git a/mistserver_3.11.1/Dockerfile.mistserver b/mistserver_3.11.1/Dockerfile.mistserver
new file mode 100644
index 0000000..268b6ef
--- /dev/null
+++ b/mistserver_3.11.1/Dockerfile.mistserver
@@ -0,0 +1,69 @@
+FROM alpine:3.24
+
+ARG MIST_OPTS=""
+ARG MIST_DEBUG=3
+ENV MIST_VERSION=3.11.1
+ENV MIST_SHA256=8a76b9cc06fcaf544a4d80763234a1b0001d34ea96e414c148e90fbb37d091d6
+
+ENV MBEDTLS_VERSION=3.6.6
+ENV MBEDTLS_SHA256=8fb65fae8dcae5840f793c0a334860a411f884cc537ea290ce1c52bb64ca007a
+
+RUN set -eux; \
+ apk add --no-cache --virtual .build-deps \
+ git \
+ patch \
+ meson \
+ ninja \
+ gcc \
+ g++ \
+ linux-headers \
+ pigz \
+ curl \
+ cjson-dev \
+ pkgconfig \
+ pax-utils; \
+ \
+ curl -fsSL -o /tmp/src.tar.gz "https://r.mistserver.org/dl/mistserver_sourceV${MIST_VERSION}.tar.gz"; \
+ echo "${MIST_SHA256} */tmp/src.tar.gz" | sha256sum -c -; \
+ mkdir /src; \
+ tar -xzf /tmp/src.tar.gz -C /src; \
+ rm -f /tmp/src.tar.gz; \
+ \
+# Explicitly build mbedtls because official builds lack DTLS support
+ mkdir -p /deps/build/mbedtls; \
+ curl -fsSL -o /tmp/mbedtls-${MBEDTLS_VERSION}.tar.bz2 "https://github.com/Mbed-TLS/mbedtls/releases/download/mbedtls-${MBEDTLS_VERSION}/mbedtls-${MBEDTLS_VERSION}.tar.bz2"; \
+ echo "${MBEDTLS_SHA256} */tmp/mbedtls-${MBEDTLS_VERSION}.tar.bz2" | sha256sum -c -; \
+ tar -xjf /tmp/mbedtls-${MBEDTLS_VERSION}.tar.bz2 -C /deps; \
+ rm -f /tmp/mbedtls-${MBEDTLS_VERSION}.tar.bz2; \
+ \
+ cp /src/subprojects/packagefiles/mbedtls/meson.build /deps/mbedtls-${MBEDTLS_VERSION}/; \
+ cp /src/subprojects/packagefiles/mbedtls/include/mbedtls/mbedtls_config.h /deps/mbedtls-${MBEDTLS_VERSION}/include/mbedtls/; \
+ \
+ cd /deps/build/mbedtls; \
+ meson setup /deps/mbedtls-${MBEDTLS_VERSION} -Dstrip=true; \
+ meson install; \
+ \
+ mkdir /build; \
+ cd /build; \
+ meson setup /src \
+ -DDOCKERRUN=true \
+ -DNOUPDATE=true \
+ -DDEBUG=${MIST_DEBUG} \
+ -DVERSION=${MIST_VERSION} \
+ -DRELEASE="Docker_$(apk --print-arch)" \
+ -Dstrip=true \
+ ${MIST_OPTS:-}; \
+ ninja install; \
+ \
+ runDeps="$( \
+ scanelf --needed --nobanner --format '%n' --recursive /usr/local \
+ | tr ',' '\n' \
+ | sort -u \
+ | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
+ )"; \
+ apk add --no-cache --virtual .mist-rundeps $runDeps; \
+ apk del .build-deps
+
+EXPOSE 4242 8080 1935 5554 8889/udp 18203/udp
+
+ENTRYPOINT ["MistController"] |
|
Thanks for the feedback @tianon, all points have been addressed in the updated Dockerfile.
To elaborate on building mbedtls from source; we require DTLS support which is not present in mbedtls official builds / releases. Though, the retrieved source code is now at least verified with its SHA-256 checksum. As for verification of MistServer itself, our newest release (3.11.1) includes downloads for the source code with matching SHA-256 checksum that we check against in the new Dockerfile. As everything mentioned has been addressed, the PR should be ready for further review. |
Checklist for Review
NOTE: This checklist is intended for the use of the Official Images maintainers both to track the status of your PR and to help inform you and others of where we're at. As such, please leave the "checking" of items to the repository maintainers. If there is a point below for which you would like to provide additional information or note completion, please do so by commenting on the PR. Thanks! (and thanks for staying patient with us ❤️)
foobarneeds Node.js, hasFROM node:...instead of grabbingnodevia other means been considered?)ifFROM scratch, tarballs only exist in a single commit within the associated history?Extra Information
I am associated with upstream, the forked repository is contained in the official MistServer organisation. Our software is public domain, and is "licensed" under the unlicense. The current image on Docker hub builds off alpine and can be found here. The tests seem to be passing. I have also created a documentation PR which passes the markdown formatter.