-
Notifications
You must be signed in to change notification settings - Fork 115
/
build-node-docker.sh
executable file
·40 lines (34 loc) · 1.32 KB
/
build-node-docker.sh
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
#!/usr/bin/env bash
set -e
# Looks for a cached joystream/node image matching code shasum.
# Search order: local repo then dockerhub. If no cached image is found we build it.
SCRIPT_PATH=`dirname "${BASH_SOURCE[0]}"`
cd $SCRIPT_PATH
FEATURES=`scripts/features.sh`
CODE_SHASUM=`scripts/runtime-code-shasum.sh`
IMAGE=joystream/node:${CODE_SHASUM}
# Look for image locally
if ! docker inspect ${IMAGE} > /dev/null;
then
# Not found, try to fetch from remote repo with local system architecture
echo "Trying to fetch cached ${IMAGE} image"
docker pull ${IMAGE} --platform linux/`uname -m` || :
# If we didn't find it, build it
if ! docker inspect ${IMAGE} > /dev/null;
then
echo "Building ${IMAGE}.."
docker build . --file joystream-node.Dockerfile \
--tag ${IMAGE} \
--build-arg CARGO_FEATURES=${FEATURES} \
--build-arg GIT_COMMIT_HASH=$(git rev-parse --short=11 HEAD) \
--build-arg CODE_SHASUM=${CODE_SHASUM}
fi
else
echo "Found ${IMAGE} in local repo"
# Not guaranteed it has the correct architecture so just log image and local system architecures
fi
IMG_ARCH=`docker inspect ${IMAGE} --format='{{.Architecture}}'`
SYS_ARCH=`uname -m`
if [ "$IMG_ARCH" != "$SYS_ARCH" ]; then
echo "WARNING: The local image's platform ${IMG_ARCH} does not match the detected host platform ${SYS_ARCH}"
fi