Skip to content

Commit 44a6102

Browse files
authored
Merge pull request #34 from linuxserver/3.22
2 parents e30ace9 + cec757a commit 44a6102

File tree

8 files changed

+154
-15
lines changed

8 files changed

+154
-15
lines changed

.github/workflows/external_trigger.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
2727
echo "> External trigger running off of main branch. To disable this trigger, add \`socket-proxy_main\` into the Github organizational variable \`SKIP_EXTERNAL_TRIGGER\`." >> $GITHUB_STEP_SUMMARY
2828
printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY
29-
EXT_RELEASE=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.21/main/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \
29+
EXT_RELEASE=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.22/main/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \
3030
&& awk '/^P:'"haproxy"'$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://')
3131
echo "Type is \`alpine_repo\`" >> $GITHUB_STEP_SUMMARY
3232
if grep -q "^socket-proxy_main_${EXT_RELEASE}" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
@@ -104,7 +104,7 @@ jobs:
104104
if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then
105105
echo "Version \`${EXT_RELEASE}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY
106106
exit 0
107-
elif [[ $(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.21/main/aarch64/APKINDEX.tar.gz" | tar -xz -C /tmp && awk '/^P:'"haproxy"'$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://') != "${EXT_RELEASE}" ]]; then
107+
elif [[ $(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.22/main/aarch64/APKINDEX.tar.gz" | tar -xz -C /tmp && awk '/^P:'"haproxy"'$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://') != "${EXT_RELEASE}" ]]; then
108108
echo "New version \`${EXT_RELEASE}\` found; but not all arch repos updated yet; exiting" >> $GITHUB_STEP_SUMMARY
109109
FAILURE_REASON="New version ${EXT_RELEASE} for socket-proxy tag latest is detected, however not all arch repos are updated yet. Will try again later."
110110
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,

Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# syntax=docker/dockerfile:1
22

3-
FROM docker.io/alpine:3.21
3+
FROM docker.io/alpine:3.22
44

55
# set version label
66
ARG BUILD_DATE
@@ -16,7 +16,7 @@ RUN \
1616
alpine-release \
1717
curl && \
1818
if [ -z ${HAPROXY_VERSION+x} ]; then \
19-
HAPROXY_VERSION=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.21/main/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \
19+
HAPROXY_VERSION=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.22/main/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \
2020
&& awk '/^P:haproxy$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://'); \
2121
fi && \
2222
apk add --no-cache \

Dockerfile.aarch64

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# syntax=docker/dockerfile:1
22

3-
FROM docker.io/alpine:3.21
3+
FROM docker.io/alpine:3.22
44

55
# set version label
66
ARG BUILD_DATE
@@ -16,7 +16,7 @@ RUN \
1616
alpine-release \
1717
curl && \
1818
if [ -z ${HAPROXY_VERSION+x} ]; then \
19-
HAPROXY_VERSION=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.21/main/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \
19+
HAPROXY_VERSION=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.22/main/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \
2020
&& awk '/^P:haproxy$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://'); \
2121
fi && \
2222
apk add --no-cache \

Dockerfile.riscv64

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# syntax=docker/dockerfile:1
2+
3+
FROM docker.io/alpine:3.22
4+
5+
# set version label
6+
ARG BUILD_DATE
7+
ARG VERSION
8+
ARG HAPROXY_VERSION
9+
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
10+
LABEL maintainer="thespad"
11+
12+
# install packages
13+
RUN \
14+
echo "**** install build packages ****" && \
15+
apk add --no-cache \
16+
alpine-release \
17+
curl && \
18+
if [ -z ${HAPROXY_VERSION+x} ]; then \
19+
HAPROXY_VERSION=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.22/main/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \
20+
&& awk '/^P:haproxy$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://'); \
21+
fi && \
22+
apk add --no-cache \
23+
haproxy==${HAPROXY_VERSION} && \
24+
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
25+
apk del --no-cache \
26+
curl && \
27+
rm -rf \
28+
/etc/haproxy \
29+
/tmp/*
30+
31+
ENV ALLOW_RESTARTS=0 \
32+
ALLOW_STOP=0 \
33+
ALLOW_START=0 \
34+
AUTH=0 \
35+
BUILD=0 \
36+
COMMIT=0 \
37+
CONFIGS=0 \
38+
CONTAINERS=0 \
39+
DISTRIBUTION=0 \
40+
EVENTS=1 \
41+
EXEC=0 \
42+
IMAGES=0 \
43+
INFO=0 \
44+
LOG_LEVEL=info \
45+
NETWORKS=0 \
46+
NODES=0 \
47+
PING=1 \
48+
PLUGINS=0 \
49+
POST=0 \
50+
SECRETS=0 \
51+
SERVICES=0 \
52+
SESSION=0 \
53+
SOCKET_PATH=/var/run/docker.sock \
54+
SWARM=0 \
55+
SYSTEM=0 \
56+
TASKS=0 \
57+
VERSION=1 \
58+
VOLUMES=0
59+
60+
# add local files
61+
COPY root/ /
62+
63+
ENTRYPOINT ["/docker-entrypoint.sh"]

Jenkinsfile

Lines changed: 79 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ pipeline {
2727
DEV_DOCKERHUB_IMAGE = 'lsiodev/socket-proxy'
2828
PR_DOCKERHUB_IMAGE = 'lspipepr/socket-proxy'
2929
DIST_IMAGE = 'alpine'
30-
DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.21/main/'
30+
DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.22/main/'
3131
DIST_REPO_PACKAGES = 'haproxy'
3232
MULTIARCH='true'
3333
CI='true'
@@ -199,7 +199,7 @@ pipeline {
199199
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
200200
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
201201
if (env.MULTIARCH == 'true') {
202-
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
202+
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|riscv64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
203203
} else {
204204
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
205205
}
@@ -223,7 +223,7 @@ pipeline {
223223
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
224224
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
225225
if (env.MULTIARCH == 'true') {
226-
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
226+
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|riscv64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
227227
} else {
228228
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
229229
}
@@ -247,7 +247,7 @@ pipeline {
247247
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
248248
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
249249
if (env.MULTIARCH == 'true') {
250-
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
250+
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|riscv64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
251251
} else {
252252
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
253253
}
@@ -698,6 +698,73 @@ pipeline {
698698
'''
699699
}
700700
}
701+
stage('Build RISCV64') {
702+
agent {
703+
label 'RISCV64'
704+
}
705+
steps {
706+
echo "Running on node: ${NODE_NAME}"
707+
sh "sed -r -i 's|(^FROM .*)|\\1\\n\\nENV LSIO_FIRST_PARTY=true|g' Dockerfile.riscv64"
708+
sh "docker buildx build \
709+
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \
710+
--label \"org.opencontainers.image.authors=linuxserver.io\" \
711+
--label \"org.opencontainers.image.url=https://github.com/linuxserver/docker-socket-proxy/packages\" \
712+
--label \"org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-socket-proxy\" \
713+
--label \"org.opencontainers.image.source=https://github.com/linuxserver/docker-socket-proxy\" \
714+
--label \"org.opencontainers.image.version=${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}\" \
715+
--label \"org.opencontainers.image.revision=${COMMIT_SHA}\" \
716+
--label \"org.opencontainers.image.vendor=linuxserver.io\" \
717+
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
718+
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
719+
--label \"org.opencontainers.image.title=Socket-proxy\" \
720+
--label \"org.opencontainers.image.description=The Socket Proxy is a security-enhanced proxy which allows you to apply access rules to the Docker socket, limiting the attack surface for containers such as watchtower or Traefik that need to use it.\" \
721+
--no-cache --pull -f Dockerfile.riscv64 -t ${IMAGE}:riscv64-${META_TAG} --platform=linux/riscv64 \
722+
--provenance=true --sbom=true --builder=container --load \
723+
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
724+
sh '''#! /bin/bash
725+
set -e
726+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
727+
for i in "${CACHE[@]}"; do
728+
docker tag ${IMAGE}:riscv64-${META_TAG} ${i}:riscv64-${COMMIT_SHA}-${BUILD_NUMBER}
729+
done
730+
'''
731+
withCredentials([
732+
[
733+
$class: 'UsernamePasswordMultiBinding',
734+
credentialsId: 'Quay.io-Robot',
735+
usernameVariable: 'QUAYUSER',
736+
passwordVariable: 'QUAYPASS'
737+
]
738+
]) {
739+
retry_backoff(5,5) {
740+
sh '''#! /bin/bash
741+
set -e
742+
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
743+
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
744+
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
745+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
746+
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
747+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
748+
for i in "${CACHE[@]}"; do
749+
docker push ${i}:riscv64-${COMMIT_SHA}-${BUILD_NUMBER} &
750+
done
751+
for p in $(jobs -p); do
752+
wait "$p" || { echo "job $p failed" >&2; exit 1; }
753+
done
754+
fi
755+
'''
756+
}
757+
}
758+
sh '''#! /bin/bash
759+
containers=$(docker ps -aq)
760+
if [[ -n "${containers}" ]]; then
761+
docker stop ${containers}
762+
fi
763+
docker system prune -f --volumes || :
764+
docker image prune -af || :
765+
'''
766+
}
767+
}
701768
}
702769
}
703770
// Take the image we just built and dump package versions for comparison
@@ -811,6 +878,8 @@ pipeline {
811878
if [ "${MULTIARCH}" == "true" ]; then
812879
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
813880
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
881+
docker pull ghcr.io/linuxserver/lsiodev-buildcache:riscv64-${COMMIT_SHA}-${BUILD_NUMBER} --platform=riscv64
882+
docker tag ghcr.io/linuxserver/lsiodev-buildcache:riscv64-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:riscv64-${META_TAG}
814883
fi
815884
docker run --rm \
816885
--shm-size=1gb \
@@ -885,18 +954,20 @@ pipeline {
885954
done
886955
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
887956
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
957+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:riscv64-${META_TAG} -t ${MANIFESTIMAGE}:riscv64-latest -t ${MANIFESTIMAGE}:riscv64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:riscv64-${COMMIT_SHA}-${BUILD_NUMBER}
888958
if [ -n "${SEMVER}" ]; then
889959
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
890960
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
961+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:riscv64-${SEMVER} ${CACHEIMAGE}:riscv64-${COMMIT_SHA}-${BUILD_NUMBER}
891962
fi
892963
done
893964
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
894-
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
895-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
965+
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:riscv64-latest ${MANIFESTIMAGE}:arm64v8-latest
966+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:riscv64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
896967
897-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
968+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:riscv64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
898969
if [ -n "${SEMVER}" ]; then
899-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
970+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:riscv64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
900971
fi
901972
done
902973
'''

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ The architectures supported by this image are:
4747
| Architecture | Available | Tag |
4848
| :----: | :----: | ---- |
4949
| x86-64 || amd64-\<version tag\> |
50+
| riscv64 || riscv64-\<version tag\> |
5051
| arm64 || arm64v8-\<version tag\> |
5152
| armhf || |
5253

@@ -315,6 +316,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
315316

316317
## Versions
317318

319+
* **03.06.25:** - Rebase to Alpine 3.22. Add RISCV support.
318320
* **08.04.25:** - Add `LOG_LEVEL` back.
319321
* **06.04.25:** - Switch back to haproxy for better handling of `docker exec` connection hijacking.
320322
* **02.01.25:** - Support custom read timeout values.

jenkins-vars.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ external_type: alpine_repo
66
release_type: stable
77
release_tag: latest
88
ls_branch: main
9+
build_riscv64: true
910
repo_vars:
1011
- BUILD_VERSION_ARG = 'HAPROXY_VERSION'
1112
- LS_USER = 'linuxserver'
@@ -15,7 +16,7 @@ repo_vars:
1516
- DEV_DOCKERHUB_IMAGE = 'lsiodev/socket-proxy'
1617
- PR_DOCKERHUB_IMAGE = 'lspipepr/socket-proxy'
1718
- DIST_IMAGE = 'alpine'
18-
- DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.21/main/'
19+
- DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.22/main/'
1920
- DIST_REPO_PACKAGES = 'haproxy'
2021
- MULTIARCH='true'
2122
- CI='true'

readme-vars.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ full_custom_readme: |
5454
| Architecture | Available | Tag |
5555
| :----: | :----: | ---- |
5656
| x86-64 | ✅ | amd64-\<version tag\> |
57+
| riscv64 | ✅ | riscv64-\<version tag\> |
5758
| arm64 | ✅ | arm64v8-\<version tag\> |
5859
| armhf | ❌ | |
5960
@@ -322,6 +323,7 @@ full_custom_readme: |
322323
323324
## Versions
324325
326+
* **03.06.25:** - Rebase to Alpine 3.22. Add RISCV support.
325327
* **08.04.25:** - Add `LOG_LEVEL` back.
326328
* **06.04.25:** - Switch back to haproxy for better handling of `docker exec` connection hijacking.
327329
* **02.01.25:** - Support custom read timeout values.

0 commit comments

Comments
 (0)