-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-build.sh
More file actions
executable file
·64 lines (58 loc) · 1.88 KB
/
docker-build.sh
File metadata and controls
executable file
·64 lines (58 loc) · 1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/env bash
set -e
BUILD_ARGUMENTS=()
DEPENDENCIES=(docker)
UPDATE_BASE=false
REPOSIITORY_NAME="docker-java-nodejs"
VERSION=""
# help message
for ARGUMENT in "$@"; do
if [ "$ARGUMENT" == "-h" ] || [ "$ARGUMENT" == "--help" ]; then
echo "usage: $(basename "$0") [ARGUMENT]"
echo "Builds the docker image from the Dockerfile."
echo "ARGUMENT can be"
echo "--platform [amd64|arm64|arm] build only specified platform"
echo "--push push the build"
echo "--update-base only build if newer base image available"
exit
fi
done
# check dependencies
for cmd in ${DEPENDENCIES[@]}; do
if [[ -z "$(command -v $cmd)" ]]; then
echo "$cmd is missing!"
exit 1
fi
done
# check arguments
while [[ -n "$1" ]]; do
if [[ "$1" = "--platform" ]]; then
shift
BUILD_ARGUMENTS+=("--set" "default.platform=$1")
elif [[ "$1" = "--update-base" ]]; then
UPDATE_BASE=true
elif [[ "$1" = "--push" ]]; then
BUILD_ARGUMENTS+=("--push")
else
echo "Unknown argument: \"$1\""
exit 1
fi
shift
done
BASE_IMAGE="$(tac Dockerfile | grep --max-count=1 "FROM" | cut -d" " -f2)"
docker pull "$BASE_IMAGE"
BASE_IMAGE_DATE="$(docker image inspect --format="{{ .Created }}" "$BASE_IMAGE" | cut -d "T" -f1)"
echo "Base image is $BASE_IMAGE from $BASE_IMAGE_DATE"
IMAGE="madebytimo/${REPOSIITORY_NAME#docker-}"
if [[ "$UPDATE_BASE" == true ]]; then
docker pull "$IMAGE"
PUSHED_IMAGE_DATE="$(docker image inspect --format="{{ .Created }}" "$IMAGE" | cut -d "T" -f1)"
echo "Last pushed image is from $PUSHED_IMAGE_DATE"
if [[ "$BASE_IMAGE_DATE" < "$PUSHED_IMAGE_DATE" ]]; then
echo "Used base image is up to date"
exit;
fi
fi
VERSION="$(cat Version.txt)"
export BASE_IMAGE BASE_IMAGE_DATE IMAGE VERSION
docker buildx bake --file docker-bake.hcl "${BUILD_ARGUMENTS[@]}"