forked from activepieces/activepieces
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-entrypoint.sh
More file actions
executable file
·59 lines (49 loc) · 1.67 KB
/
Copy pathdocker-entrypoint.sh
File metadata and controls
executable file
·59 lines (49 loc) · 1.67 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
#!/bin/sh
if [ "$#" -gt 0 ]; then
exec "$@"
fi
export AP_CONTAINER_TYPE="${AP_CONTAINER_TYPE:-WORKER_AND_APP}"
export AP_PORT="${AP_PORT:-80}"
echo "AP_CONTAINER_TYPE: $AP_CONTAINER_TYPE"
echo "AP_PORT: $AP_PORT"
# Auto-generate worker token if not set and JWT secret is available
if [ -z "$AP_WORKER_TOKEN" ] && [ -n "$AP_JWT_SECRET" ]; then
echo "Auto-generating AP_WORKER_TOKEN..."
export AP_WORKER_TOKEN=$(node -e "
const jwt = require('jsonwebtoken');
const crypto = require('crypto');
const token = jwt.sign(
{ id: crypto.randomUUID(), type: 'WORKER' },
process.env.AP_JWT_SECRET,
{ expiresIn: '100y', keyid: '1', algorithm: 'HS256', issuer: 'activepieces' }
);
process.stdout.write(token);
")
fi
APP_SCRIPT="packages/server/api/dist/src/bootstrap.js"
WORKER_SCRIPT="packages/server/worker/dist/src/bootstrap.js"
echo "Starting Activepieces (${AP_CONTAINER_TYPE} mode)"
case "$AP_CONTAINER_TYPE" in
APP)
exec node --enable-source-maps "$APP_SCRIPT"
;;
WORKER)
exec node --enable-source-maps "$WORKER_SCRIPT"
;;
WORKER_AND_APP)
AP_CONTAINER_TYPE=APP node --enable-source-maps "$APP_SCRIPT" &
app_pid=$!
node --enable-source-maps "$WORKER_SCRIPT" &
worker_pid=$!
trap 'kill "$app_pid" "$worker_pid" 2>/dev/null' TERM INT
while kill -0 "$app_pid" 2>/dev/null && kill -0 "$worker_pid" 2>/dev/null; do
sleep 1
done
kill "$app_pid" "$worker_pid" 2>/dev/null
exit 1
;;
*)
echo "Unknown AP_CONTAINER_TYPE: $AP_CONTAINER_TYPE" >&2
exit 1
;;
esac