-
Notifications
You must be signed in to change notification settings - Fork 0
/
entrypoint.sh
executable file
·76 lines (64 loc) · 3.02 KB
/
entrypoint.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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/usr/bin/env bash
set -e
curl_put() {
RET=$(/usr/bin/curl -s -w '%{http_code}' -X PUT --data-binary @"$1" --unix-socket /var/run/control.unit.sock http://localhost/"$2")
RET_BODY=${RET::-3}
RET_STATUS=$(echo "$RET" | /usr/bin/tail -c 4)
if [ "$RET_STATUS" -ne "200" ]; then
echo "$0: Error: HTTP response status code is '$RET_STATUS'"
echo "$RET_BODY"
return 1
else
echo "$0: OK: HTTP response status code is '$RET_STATUS'"
echo "$RET_BODY"
fi
return 0
}
if [ "$1" = "unitd" ] || [ "$1" = "unitd-debug" ]; then
if /usr/bin/find "/var/lib/unit/" -mindepth 1 -print -quit 2>/dev/null | /bin/grep -q .; then
echo "$0: /var/lib/unit/ is not empty, skipping initial configuration..."
else
if /usr/bin/find "/entrypoint.d/" -mindepth 1 -print -quit 2>/dev/null | /bin/grep -q .; then
echo "$0: /entrypoint.d/ is not empty, launching Unit daemon to perform initial configuration..."
/usr/sbin/unitd --control unix:/var/run/control.unit.sock
while [ ! -S /var/run/control.unit.sock ]; do
echo "$0: Waiting for control socket to be created..."
/bin/sleep 0.1
done
# even when the control socket exists, it does not mean unit has finished initialisation
# this curl call will get a reply once unit is fully launched
/usr/bin/curl -s -X GET --unix-socket /var/run/control.unit.sock http://localhost/
echo "$0: Looking for certificate bundles in /entrypoint.d/..."
for f in $(/usr/bin/find /entrypoint.d/ -type f -name "*.pem"); do
echo "$0: Uploading certificates bundle: $f"
curl_put "$f" "certificates/$(basename "$f" .pem)"
done
echo "$0: Looking for configuration snippets in /entrypoint.d/..."
for f in $(/usr/bin/find /entrypoint.d/ -type f -name "*.json"); do
echo "$0: Applying configuration $f"
curl_put "$f" "config"
done
echo "$0: Looking for shell scripts in /entrypoint.d/..."
for f in $(/usr/bin/find /entrypoint.d/ -type f -name "*.sh"); do
echo "$0: Launching $f"
."$f"
done
# warn on filetypes we don't know what to do with
for f in $(/usr/bin/find /entrypoint.d/ -type f -not -name "*.sh" -not -name "*.json" -not -name "*.pem"); do
echo "$0: Ignoring $f"
done
echo "$0: Stopping Unit daemon after initial configuration..."
kill -TERM "$(/bin/cat /var/run/unit.pid)"
while [ -S /var/run/control.unit.sock ]; do
echo "$0: Waiting for control socket to be removed..."
/bin/sleep 0.1
done
echo
echo "$0: Unit initial configuration complete; ready for start up..."
echo
else
echo "$0: /entrypoint.d/ is empty, skipping initial configuration..."
fi
fi
fi
exec "$@"