forked from CopilotKit/CopilotKit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcmd-recreate.sh
More file actions
executable file
·79 lines (65 loc) · 2.35 KB
/
Copy pathcmd-recreate.sh
File metadata and controls
executable file
·79 lines (65 loc) · 2.35 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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/bin/env bash
# showcase recreate — force-recreate services to pick up new images
CMD_RECREATE_DESC="Force-recreate a service (picks up new image)"
usage_recreate() {
cat <<'HELP'
Usage: showcase recreate <slug> [slug...] [options]
Force-recreate service containers to pick up a new Docker image.
Unlike 'restart', this ensures the container uses the latest image.
Options:
--build Rebuild the image before recreating
--no-wait Don't wait for the container to become healthy
Examples:
showcase recreate mastra # recreate with current image
showcase recreate aimock # recreate aimock (uses test compose)
showcase recreate mastra --build # rebuild + recreate
showcase recreate mastra aimock # recreate multiple services
HELP
}
cmd_recreate() {
local slugs=()
local no_wait=0
local build=0
# Parse args: separate slugs from flags
for arg in "$@"; do
case "$arg" in
--no-wait) no_wait=1 ;;
--build) build=1 ;;
-h|--help) usage_recreate; return 0 ;;
-*) die "Unknown option: $arg (see 'showcase recreate --help')" ;;
*) slugs+=("$arg") ;;
esac
done
[ ${#slugs[@]} -gt 0 ] || die "Usage: showcase recreate <slug> [slug...] [--build] [--no-wait]"
for slug in "${slugs[@]}"; do
need_slug "$slug"
# Pick the right compose file: aimock uses the test compose, everything
# else uses the main local compose.
local compose
if [ "$slug" = "aimock" ]; then
compose="$AIMOCK_COMPOSE"
else
compose="$COMPOSE_FILE"
fi
info "Force-recreating showcase-${slug} (picks up new image, unlike restart)..."
if [ "$build" -eq 1 ]; then
trap restore_symlinks EXIT
stage_shared
docker compose -f "$compose" up -d --build --force-recreate "$slug"
else
docker compose -f "$compose" up -d --force-recreate "$slug"
fi
if [ "$no_wait" -eq 0 ]; then
wait_healthy "$slug" 30
fi
# Print the image ID so the user can verify it changed
local container
container="$(slug_to_container "$slug")"
local image_id
image_id="$(docker inspect --format='{{.Image}}' "$container" 2>/dev/null || echo "unknown")"
# Truncate sha256:... to first 12 hex chars
image_id="${image_id#sha256:}"
image_id="${image_id:0:12}"
success "showcase-${slug} recreated — image: ${image_id}"
done
}