Skip to content

Commit 034f039

Browse files
author
Tom Notch
committed
Adopt modern arg passing for build process
1 parent d1456c6 commit 034f039

4 files changed

Lines changed: 16 additions & 65 deletions

File tree

docker-compose.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@ services:
22
todo-service-name:
33
build:
44
dockerfile: ./docker/${IMAGE_TAG}/Dockerfile
5+
args:
6+
BASE_IMAGE: ${BASE_IMAGE}
7+
IMAGE_USER: ${IMAGE_USER}
8+
HOME_FOLDER: ${HOME_FOLDER}
9+
TIME_ZONE: ${TIME_ZONE}
510
x-bake:
611
contexts:
712
home-folder-config: ./docker/build-context/home-folder-config

docker/latest/Dockerfile

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Do not add --platform=linux/blabla since this is intended for multiplatform builds
2+
ARG BASE_IMAGE=ubuntu
23
FROM ${BASE_IMAGE}
4+
5+
ARG IMAGE_USER
6+
ARG HOME_FOLDER
7+
ARG TIME_ZONE
8+
39
ENV HOME=${HOME_FOLDER}
410
WORKDIR ${HOME_FOLDER}/
511

@@ -66,9 +72,9 @@ RUN wget https://apt-get.kitware.com/kitware-archive.sh -O- | sh -s && \
6672
apt-get autoremove -y
6773

6874
# # Add a new group and user
69-
# RUN addgroup --gid 1000 $IMAGE_USER && \
70-
# adduser --uid 1000 --ingroup $IMAGE_USER --home ${HOME_FOLDER} --shell /bin/zsh --disabled-password --gecos "" $IMAGE_USER && \
71-
# echo "$IMAGE_USER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
75+
# RUN addgroup --gid 1000 ${IMAGE_USER} && \
76+
# adduser --uid 1000 --ingroup ${IMAGE_USER} --home ${HOME_FOLDER} --shell /bin/zsh --disabled-password --gecos "" ${IMAGE_USER} && \
77+
# echo "${IMAGE_USER} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
7278

7379
# # Fix UID/GID when mounting from host using this: https://github.com/boxboat/fixuid
7480
# RUN curl -SsL https://github.com/boxboat/fixuid/releases/download/v0.6.0/fixuid-0.6.0-linux-amd64.tar.gz | tar -C /usr/local/bin -xzf - && \

scripts/build.sh

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -10,32 +10,10 @@
1010

1111
set -euo pipefail
1212

13-
before_env="$(mktemp)"
14-
after_env="$(mktemp)"
15-
tmp_dockerfile="$(mktemp)"
16-
cleanup() { rm -f "${before_env}" "${after_env}" "${tmp_dockerfile}"; }
17-
trap cleanup EXIT
18-
19-
env | sort >"${before_env}"
20-
2113
set -a
2214
. "$(dirname "$0")"/variables.sh
2315
set +a
2416

25-
env | sort >"${after_env}"
26-
27-
diff_env="$(
28-
awk -F= '
29-
NR==FNR { before[$1]=$0; next }
30-
{
31-
name=$1
32-
if (!(name in before) || before[name] != $0)
33-
printf " ${%s}", name
34-
}
35-
' "${before_env}" "${after_env}"
36-
)"
37-
diff_env="${diff_env# }" # trim leading space
38-
3917
# Determine the local platform
4018
if [[ "$(uname -m)" == "x86_64" ]]; then
4119
LOCAL_PLATFORM="linux/amd64"
@@ -58,13 +36,5 @@ else
5836
docker buildx use "${BUILDER}"
5937
fi
6038

61-
# environment variable substitution trick
62-
envsubst "${diff_env}" <"$(dirname "$0")/../docker/${IMAGE_TAG}/Dockerfile" >"${tmp_dockerfile}"
63-
64-
echo ">>> Substituted dockerfile:"
65-
echo "----------------------------------------"
66-
cat "${tmp_dockerfile}"
67-
echo "----------------------------------------"
68-
6939
# Build the Docker image for only the local platform, push.sh will push multi-platform version
70-
docker buildx bake --file "$(dirname "$0")"/../docker-compose.yml --load --set "*.platform=${LOCAL_PLATFORM}" --set "*.dockerfile=${tmp_dockerfile}"
40+
docker buildx bake --file "$(dirname "$0")"/../docker-compose.yml --load --set "*.platform=${LOCAL_PLATFORM}"

scripts/push.sh

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -10,32 +10,10 @@
1010

1111
set -euo pipefail
1212

13-
before_env="$(mktemp)"
14-
after_env="$(mktemp)"
15-
tmp_dockerfile="$(mktemp)"
16-
cleanup() { rm -f "${before_env}" "${after_env}" "${tmp_dockerfile}"; }
17-
trap cleanup EXIT
18-
19-
env | sort >"${before_env}"
20-
2113
set -a
2214
. "$(dirname "$0")"/variables.sh
2315
set +a
2416

25-
env | sort >"${after_env}"
26-
27-
diff_env="$(
28-
awk -F= '
29-
NR==FNR { before[$1]=$0; next }
30-
{
31-
name=$1
32-
if (!(name in before) || before[name] != $0)
33-
printf " ${%s}", name
34-
}
35-
' "${before_env}" "${after_env}"
36-
)"
37-
diff_env="${diff_env# }" # trim leading space
38-
3917
# Check if the builder already exists
4018
if ! docker buildx inspect "${BUILDER}" &>/dev/null; then
4119
echo "Creating Docker Buildx builder '${BUILDER}'..."
@@ -48,14 +26,6 @@ else
4826
docker buildx use "${BUILDER}"
4927
fi
5028

51-
# environment variable substitution trick
52-
envsubst "${diff_env}" <"$(dirname "$0")/../docker/${IMAGE_TAG}/Dockerfile" >"${tmp_dockerfile}"
53-
54-
echo ">>> Substituted dockerfile:"
55-
echo "----------------------------------------"
56-
cat "${tmp_dockerfile}"
57-
echo "----------------------------------------"
58-
5929
# docker push "${DOCKER_USER}"/"${IMAGE_NAME}":"${IMAGE_TAG}"
6030

61-
docker buildx bake --file "$(dirname "$0")"/../docker-compose.yml --push --set "*.dockerfile=${tmp_dockerfile}"
31+
docker buildx bake --file "$(dirname "$0")"/../docker-compose.yml --push

0 commit comments

Comments
 (0)