Skip to content

Commit 32aadbb

Browse files
authored
Merge pull request #835 from linuxserver/universal-docker-multi
docker: switch to multi-arch
2 parents f5302be + 9a70060 commit 32aadbb

File tree

3 files changed

+51
-47
lines changed

3 files changed

+51
-47
lines changed

.github/workflows/BuildImage.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ env:
77
ENDPOINT: "linuxserver/mods" #don't modify
88
BASEIMAGE: "universal" #replace
99
MODNAME: "docker" #replace
10+
MULTI_ARCH: "true" #set to true if needed
1011

1112
jobs:
1213
set-vars:
@@ -19,6 +20,7 @@ jobs:
1920
echo "ENDPOINT=${{ env.ENDPOINT }}" >> $GITHUB_OUTPUT
2021
echo "BASEIMAGE=${{ env.BASEIMAGE }}" >> $GITHUB_OUTPUT
2122
echo "MODNAME=${{ env.MODNAME }}" >> $GITHUB_OUTPUT
23+
echo "MULTI_ARCH=${{ env.MULTI_ARCH }}" >> $GITHUB_OUTPUT
2224
# **** If the mod needs to be versioned, set the versioning logic below. Otherwise leave as is. ****
2325
COMPOSE_RELEASE=$(curl -sX GET "https://api.github.com/repos/docker/compose/releases/latest" | awk '/tag_name/{print $4;exit}' FS='[""]' | sed 's|^v||')
2426
DOCKER_RELEASE=$(curl -sX GET "https://api.github.com/repos/moby/moby/releases/latest" | awk '/tag_name/{print $4;exit}' FS='[""]' | sed 's|^v||')
@@ -29,6 +31,7 @@ jobs:
2931
ENDPOINT: ${{ steps.outputs.outputs.ENDPOINT }}
3032
BASEIMAGE: ${{ steps.outputs.outputs.BASEIMAGE }}
3133
MODNAME: ${{ steps.outputs.outputs.MODNAME }}
34+
MULTI_ARCH: ${{ steps.outputs.outputs.MULTI_ARCH }}
3235
MOD_VERSION: ${{ steps.outputs.outputs.MOD_VERSION }}
3336

3437
build:
@@ -44,4 +47,5 @@ jobs:
4447
ENDPOINT: ${{ needs.set-vars.outputs.ENDPOINT }}
4548
BASEIMAGE: ${{ needs.set-vars.outputs.BASEIMAGE }}
4649
MODNAME: ${{ needs.set-vars.outputs.MODNAME }}
50+
MULTI_ARCH: ${{ needs.set-vars.outputs.MULTI_ARCH }}
4751
MOD_VERSION: ${{ needs.set-vars.outputs.MOD_VERSION }}

Dockerfile

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

3-
FROM ghcr.io/linuxserver/baseimage-alpine:3.17 as buildstage
3+
FROM ghcr.io/linuxserver/baseimage-alpine:3.19 as buildstage
44

55
ARG MOD_VERSION
66

77
RUN \
8-
echo "**** retrieve latest version ****" && \
9-
if [[ -z "${MOD_VERSION+x}" ]]; then \
8+
echo "**** retrieve latest docker and compose versions ****" && \
9+
if [ -z "${MOD_VERSION+x}" ]; then \
1010
DOCKER_RELEASE=$(curl -sX GET "https://api.github.com/repos/moby/moby/releases/latest" \
1111
| awk '/tag_name/{print $4;exit}' FS='[""]' \
1212
| sed 's|^v||'); \
@@ -17,57 +17,57 @@ RUN \
1717
DOCKER_RELEASE=$(echo "${MOD_VERSION}" | sed 's|-.*||'); \
1818
COMPOSE_RELEASE=$(echo "${MOD_VERSION}" | sed 's|.*-||'); \
1919
fi && \
20-
echo "**** grab docker ****" && \
21-
mkdir -p \
22-
/root-layer/docker-bins \
23-
/tmp/docker_x86_64 \
24-
/tmp/docker_aarch64 && \
25-
curl -fo \
26-
/tmp/docker_x86_64.tgz -L \
27-
"https://download.docker.com/linux/static/stable/x86_64/docker-${DOCKER_RELEASE}.tgz" && \
28-
tar xf \
29-
/tmp/docker_x86_64.tgz -C \
30-
/tmp/docker_x86_64 --strip-components=1 && \
31-
cp /tmp/docker_x86_64/docker /root-layer/docker-bins/docker_x86_64 && \
32-
curl -fo \
33-
/tmp/docker_aarch64.tgz -L \
34-
"https://download.docker.com/linux/static/stable/aarch64/docker-${DOCKER_RELEASE}.tgz" && \
35-
tar xf \
36-
/tmp/docker_aarch64.tgz -C \
37-
/tmp/docker_aarch64 --strip-components=1 && \
38-
cp /tmp/docker_aarch64/docker /root-layer/docker-bins/docker_aarch64 && \
39-
echo "**** grab compose ****" && \
40-
curl -fo \
41-
/root-layer/docker-bins/docker-compose_x86_64 -L \
42-
"https://github.com/docker/compose/releases/download/v${COMPOSE_RELEASE}/docker-compose-linux-x86_64" && \
43-
curl -fo \
44-
/root-layer/docker-bins/docker-compose_aarch64 -L \
45-
"https://github.com/docker/compose/releases/download/v${COMPOSE_RELEASE}/docker-compose-linux-aarch64" && \
4620
echo "**** retrieve latest compose switch version ****" && \
4721
if [ -z ${SWITCH_RELEASE+x} ]; then \
4822
SWITCH_RELEASE=$(curl -sX GET "https://api.github.com/repos/docker/compose-switch/releases/latest" \
4923
| awk '/tag_name/{print $4;exit}' FS='[""]' \
5024
| sed 's|^v||'); \
5125
fi && \
52-
echo "**** grab compose switch ****" && \
53-
curl -fo \
54-
/root-layer/docker-bins/compose-switch_x86_64 -L \
55-
"https://github.com/docker/compose-switch/releases/download/v${SWITCH_RELEASE}/docker-compose-linux-amd64" && \
56-
curl -fo \
57-
/root-layer/docker-bins/compose-switch_aarch64 -L \
58-
"https://github.com/docker/compose-switch/releases/download/v${SWITCH_RELEASE}/docker-compose-linux-arm64" && \
5926
echo "**** retrieve latest buildx version ****" && \
6027
if [ -z ${BUILDX_RELEASE+x} ]; then \
6128
BUILDX_RELEASE=$(curl -sX GET "https://api.github.com/repos/docker/buildx/releases/latest" \
6229
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
6330
fi && \
64-
echo "**** grab buildx plugin ****" && \
65-
curl -fo \
66-
/root-layer/docker-bins/docker-buildx_x86_64 -L \
67-
"https://github.com/docker/buildx/releases/download/${BUILDX_RELEASE}/buildx-${BUILDX_RELEASE}.linux-amd64" && \
68-
curl -fo \
69-
/root-layer/docker-bins/docker-buildx_aarch64 -L \
70-
"https://github.com/docker/buildx/releases/download/${BUILDX_RELEASE}/buildx-${BUILDX_RELEASE}.linux-arm64" && \
31+
mkdir -p \
32+
/root-layer/docker-bins \
33+
/tmp/docker && \
34+
if [ $(uname -m) = "x86_64" ]; then \
35+
echo "**** grab x86_64 tarballs and binaries ****" && \
36+
curl -fo \
37+
/tmp/docker.tgz -L \
38+
"https://download.docker.com/linux/static/stable/x86_64/docker-${DOCKER_RELEASE}.tgz" && \
39+
tar xf \
40+
/tmp/docker.tgz -C \
41+
/tmp/docker --strip-components=1 && \
42+
cp /tmp/docker/docker /root-layer/docker-bins/docker && \
43+
curl -fo \
44+
/root-layer/docker-bins/docker-compose -L \
45+
"https://github.com/docker/compose/releases/download/v${COMPOSE_RELEASE}/docker-compose-linux-x86_64" && \
46+
curl -fo \
47+
/root-layer/docker-bins/compose-switch -L \
48+
"https://github.com/docker/compose-switch/releases/download/v${SWITCH_RELEASE}/docker-compose-linux-amd64" && \
49+
curl -fo \
50+
/root-layer/docker-bins/docker-buildx -L \
51+
"https://github.com/docker/buildx/releases/download/${BUILDX_RELEASE}/buildx-${BUILDX_RELEASE}.linux-amd64"; \
52+
elif [ $(uname -m) = "aarch64" ]; then \
53+
echo "**** grab aarch64 tarballs and binaries ****" && \
54+
curl -fo \
55+
/tmp/docker.tgz -L \
56+
"https://download.docker.com/linux/static/stable/aarch64/docker-${DOCKER_RELEASE}.tgz" && \
57+
tar xf \
58+
/tmp/docker.tgz -C \
59+
/tmp/docker --strip-components=1 && \
60+
cp /tmp/docker/docker /root-layer/docker-bins/docker && \
61+
curl -fo \
62+
/root-layer/docker-bins/docker-compose -L \
63+
"https://github.com/docker/compose/releases/download/v${COMPOSE_RELEASE}/docker-compose-linux-aarch64" && \
64+
curl -fo \
65+
/root-layer/docker-bins/compose-switch -L \
66+
"https://github.com/docker/compose-switch/releases/download/v${SWITCH_RELEASE}/docker-compose-linux-arm64" && \
67+
curl -fo \
68+
/root-layer/docker-bins/docker-buildx -L \
69+
"https://github.com/docker/buildx/releases/download/${BUILDX_RELEASE}/buildx-${BUILDX_RELEASE}.linux-arm64"; \
70+
fi && \
7171
chmod +x /root-layer/docker-bins/* && \
7272
rm -rf /tmp/*
7373

root/etc/s6-overlay/s6-rc.d/init-mod-universal-docker-setup/run

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ fi
99
if [[ -d "/docker-bins" ]] ; then
1010
echo "Copying over docker and docker-compose binaries"
1111
mkdir -p /usr/local/lib/docker/cli-plugins
12-
mv "/docker-bins/docker-compose_${ARCH}" /usr/local/lib/docker/cli-plugins/docker-compose
13-
mv "/docker-bins/docker-buildx_${ARCH}" /usr/local/lib/docker/cli-plugins/docker-buildx
14-
mv "/docker-bins/docker_${ARCH}" /usr/local/bin/docker
15-
mv "/docker-bins/compose-switch_${ARCH}" /usr/local/bin/docker-compose
12+
mv "/docker-bins/docker-compose" /usr/local/lib/docker/cli-plugins/docker-compose
13+
mv "/docker-bins/docker-buildx" /usr/local/lib/docker/cli-plugins/docker-buildx
14+
mv "/docker-bins/docker" /usr/local/bin/docker
15+
mv "/docker-bins/compose-switch" /usr/local/bin/docker-compose
1616
rm -rf /docker-bins
1717
else
1818
echo "**** docker and docker-compose already installed, skipping ****"

0 commit comments

Comments
 (0)