Skip to content

Commit 5328476

Browse files
committed
Build (optional) multi arch support into our build toolkit
1 parent f6ce09f commit 5328476

File tree

9 files changed

+188
-389
lines changed

9 files changed

+188
-389
lines changed

.github/workflows/ci.yml

Lines changed: 145 additions & 371 deletions
Large diffs are not rendered by default.

Dockerfile-cli

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# syntax=docker/dockerfile:experimental
22
FROM php:7.2-cli-alpine3.7 as cli
3+
ARG TARGETOS
4+
ARG TARGETARCH
35

46
# Add usabilla user and group
57
RUN set -x \

Dockerfile-fpm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# syntax=docker/dockerfile:experimental
22
FROM php:7.2-fpm-alpine3.7 as fpm
3+
ARG TARGETOS
4+
ARG TARGETARCH
35

46
ENV FCGI_CONNECT=/var/run/php-fpm.sock
57
ENV PHP_FPM_PM=dynamic

Dockerfile-http

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM nginx:1.15-alpine as http
1+
FROM nginx:1.15-alpine AS http
22

33
# Add usabilla user and group
44
RUN set -x \
@@ -37,6 +37,6 @@ CMD ["docker-nginx-entrypoint"]
3737
# this can be overriden in the child images
3838
HEALTHCHECK NONE
3939

40-
FROM http as http-dev
40+
FROM http AS http-dev
4141

4242
ENV NGINX_EXPOSE_VERSION=on

build-http.sh

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,24 @@ declare -r IMAGE_ORIGINAL_TAG="nginx:1.[0-9][0-9]?-alpine"
1515

1616
declare -r IMAGE_TAG="nginx:${VERSION_NGINX}-alpine"
1717
declare -r USABILLA_TAG_PREFIX="usabillabv/php"
18-
declare -r USABILLA_TAG="${USABILLA_TAG_PREFIX}:nginx${VERSION_NGINX}"
18+
if [[ ! -v DOCKER_BUILD_PLATFORM ]]; then
19+
DOCKER_BUILD_FLAGS=""
20+
declare -r USABILLA_TAG_SUFFIX=""
21+
else
22+
DOCKER_BUILD_FLAGS="--platform="${DOCKER_BUILD_PLATFORM}""
23+
declare -r USABILLA_TAG_SUFFIX="-$(echo "${DOCKER_BUILD_PLATFORM}" | cut -d "/" -f 2)"
24+
fi
25+
declare -r USABILLA_TAG="${USABILLA_TAG_PREFIX}:nginx${VERSION_NGINX}${USABILLA_TAG_SUFFIX}"
1926
declare -r USABILLA_TAG_DEV="${USABILLA_TAG}-dev"
2027

21-
TAG_FILE="./tmp/build-${IMAGE}.tags"
28+
TAG_FILE="./tmp/build-${IMAGE}${USABILLA_TAG_SUFFIX}.tags"
2229

2330
sed -E "s/${IMAGE_ORIGINAL_TAG}/${IMAGE_TAG}/g" "Dockerfile-${IMAGE}" | docker build --pull -t "${USABILLA_TAG}" \
24-
--build-arg=NGINX_VHOST_TEMPLATE=php-fpm --target="${IMAGE}" -f - . \
31+
--build-arg=NGINX_VHOST_TEMPLATE=php-fpm --target="${IMAGE}" ${DOCKER_BUILD_FLAGS} -f - . \
2532
&& echo "${USABILLA_TAG}" >> "${TAG_FILE}"
2633

2734
sed -E "s/${IMAGE_ORIGINAL_TAG}/${IMAGE_TAG}/g" "Dockerfile-${IMAGE}" | docker build --pull -t "${USABILLA_TAG_DEV}" \
28-
--build-arg=NGINX_VHOST_TEMPLATE=php-fpm --target="${IMAGE}-dev" -f - . \
35+
--build-arg=NGINX_VHOST_TEMPLATE=php-fpm --target="${IMAGE}-dev" ${DOCKER_BUILD_FLAGS} -f - . \
2936
&& echo "$USABILLA_TAG_DEV" >> "${TAG_FILE}"
3037

3138
for IMAGE_EXTRA_TAG in "${@:2}"

build-php.sh

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,20 @@ declare -r VERSION_ALPINE=$3
1616
declare -r IMAGE_ORIGINAL_TAG="7.[0-9]-${IMAGE}-alpine3.[0-9]"
1717

1818
declare -r IMAGE_TAG="${VERSION_PHP}-${IMAGE}-alpine${VERSION_ALPINE}"
19-
declare -r USABILLA_TAG="usabillabv/php:${VERSION_PHP}-${IMAGE}-alpine${VERSION_ALPINE}"
19+
if [[ ! -v DOCKER_BUILD_PLATFORM ]]; then
20+
DOCKER_BUILD_FLAGS=""
21+
declare -r USABILLA_TAG_SUFFIX=""
22+
else
23+
DOCKER_BUILD_FLAGS="--platform="${DOCKER_BUILD_PLATFORM}""
24+
declare -r USABILLA_TAG_SUFFIX="-$(echo "${DOCKER_BUILD_PLATFORM}" | cut -d "/" -f 2)"
25+
fi
26+
declare -r USABILLA_TAG="usabillabv/php:${VERSION_PHP}-${IMAGE}-alpine${VERSION_ALPINE}${USABILLA_TAG_SUFFIX}"
2027
declare -r USABILLA_TAG_DEV="${USABILLA_TAG}-dev"
2128

22-
declare -r TAG_FILE="./tmp/build-${IMAGE}.tags"
29+
declare -r TAG_FILE="./tmp/build-${IMAGE}${USABILLA_TAG_SUFFIX}.tags"
2330

24-
sed -E "s/${IMAGE_ORIGINAL_TAG}/${IMAGE_TAG}/g" "Dockerfile-${IMAGE}" | docker build --pull -t "${USABILLA_TAG}" --target="${IMAGE}" -f - . \
31+
sed -E "s/${IMAGE_ORIGINAL_TAG}/${IMAGE_TAG}/g" "Dockerfile-${IMAGE}" | docker build --pull -t "${USABILLA_TAG}" --target="${IMAGE}" ${DOCKER_BUILD_FLAGS} -f - . \
2532
&& echo "$USABILLA_TAG" >> "$TAG_FILE"
2633

27-
sed -E "s/${IMAGE_ORIGINAL_TAG}/${IMAGE_TAG}/g" "Dockerfile-${IMAGE}" | docker build --pull -t "${USABILLA_TAG_DEV}" --target="${IMAGE}-dev" -f - . \
34+
sed -E "s/${IMAGE_ORIGINAL_TAG}/${IMAGE_TAG}/g" "Dockerfile-${IMAGE}" | docker build --pull -t "${USABILLA_TAG_DEV}" --target="${IMAGE}-dev" ${DOCKER_BUILD_FLAGS} -f - . \
2835
&& echo "$USABILLA_TAG_DEV" >> "$TAG_FILE"

build-prometheus-exporter-file.sh

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,23 @@ declare -r IMAGE_ORIGINAL_TAG="nginx:1.[0-9][0-9]?-alpine"
1717

1818
declare -r IMAGE_TAG="nginx:${VERSION_NGINX}-alpine"
1919
declare -r USABILLA_TAG_PREFIX="usabillabv/php"
20-
declare -r USABILLA_TAG="${USABILLA_TAG_PREFIX}:${IMAGE}"
20+
if [[ ! -v DOCKER_BUILD_PLATFORM ]]; then
21+
DOCKER_BUILD_FLAGS=""
22+
declare -r USABILLA_TAG_SUFFIX=""
23+
else
24+
DOCKER_BUILD_FLAGS="--platform="${DOCKER_BUILD_PLATFORM}""
25+
declare -r USABILLA_TAG_SUFFIX="-$(echo "${DOCKER_BUILD_PLATFORM}" | cut -d "/" -f 2)"
26+
fi
27+
declare -r USABILLA_TAG="${USABILLA_TAG_PREFIX}:${IMAGE}${USABILLA_TAG_SUFFIX}"
2128

22-
TAG_FILE="./tmp/build-${IMAGE}.tags"
29+
TAG_FILE="./tmp/build-${IMAGE}${USABILLA_TAG_SUFFIX}.tags"
2330

2431
sed -E "s/${IMAGE_ORIGINAL_TAG}/${IMAGE_TAG}/g" "Dockerfile-${DOCKER_FILE}" | docker build --pull -t "${USABILLA_TAG}" \
25-
--build-arg=NGINX_VHOST_TEMPLATE=prometheus-exporter-file --target="http" -f - . \
32+
--build-arg=NGINX_VHOST_TEMPLATE=prometheus-exporter-file --target="http" ${DOCKER_BUILD_FLAGS} -f - . \
2633
&& echo "${USABILLA_TAG}" >> "${TAG_FILE}"
2734

2835
for USABILLA_TAG_EXTRA in "${@:2}"
2936
do
30-
docker tag "${USABILLA_TAG}" "${USABILLA_TAG_PREFIX}:${USABILLA_TAG_EXTRA}" \
31-
&& echo "${USABILLA_TAG_PREFIX}:${USABILLA_TAG_EXTRA}" >> "${TAG_FILE}"
37+
docker tag "${USABILLA_TAG}" "${USABILLA_TAG_PREFIX}:${USABILLA_TAG_EXTRA}${USABILLA_TAG_SUFFIX}" \
38+
&& echo "${USABILLA_TAG_PREFIX}:${USABILLA_TAG_EXTRA}${USABILLA_TAG_SUFFIX}" >> "${TAG_FILE}"
3239
done

src/php/utils/install-dumb-init

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ set -xeu
44

55
VERSION="1.2.2"
66

7-
curl -sL -o /usr/local/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v"$VERSION"/dumb-init_"$VERSION"_amd64
7+
curl -sL -o /usr/local/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v"$VERSION"/dumb-init_"$VERSION"_"${TARGETARCH}"
88

99
chmod +x /usr/local/bin/dumb-init
1010

src/php/utils/install-shush

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
set -xe
44

5-
curl -sL -o /usr/local/bin/shush https://github.com/realestate-com-au/shush/releases/download/v1.5.0/shush_linux_amd64
5+
curl -sL -o /usr/local/bin/shush "https://github.com/realestate-com-au/shush/releases/download/v1.5.0/shush_linux_${TARGETARCH}"
66

7-
echo "cdec941dc5f45dda2d981169aa1845540d2c5bf98bfd1d8a85deaa6a6a43a4d1 /usr/local/bin/shush" | sha256sum -c
7+
(echo "cdec941dc5f45dda2d981169aa1845540d2c5bf98bfd1d8a85deaa6a6a43a4d1 /usr/local/bin/shush" | sha256sum -c) || (echo "4bc0eecb363008a006e071715f7dd7d30e1be23590d778c1779be889439890c0 /usr/local/bin/shush" | sha256sum -c)
88

99
chmod +x /usr/local/bin/shush
1010

0 commit comments

Comments
 (0)