forked from dokku-alt/dokku-alt
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcommands
More file actions
executable file
·121 lines (97 loc) · 2.82 KB
/
Copy pathcommands
File metadata and controls
executable file
·121 lines (97 loc) · 2.82 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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#!/bin/bash
source "$(dirname $0)/vars"
case "$1" in
volume:create)
volume_info "$2"
shift 2
DOCKER_ARGS=()
# Verify paths
for path in "$@"; do
if [[ "$NAME" != "root" ]]; then
ipath="${path//:/}"
[[ "$path" != "$ipath" ]] && fail "$path: Path is forbidden"
fi
DOCKER_ARGS+=("-v" "$path")
done
# Create data container
docker run --name "$VOLUME_CONTAINER" "${DOCKER_ARGS[@]}" "$VOLUME_IMAGE" /bin/sh -c "exit 0"
# Create data links
mkdir -p "$VOLUME_CONFIG_DIR"
# Mark as created
for path in "$@"; do
echo "$path"
done > "$VOLUME_PATHS"
info "Volume created: $VOLUME_CONTAINER"
;;
volume:delete|volume:destroy)
volume_info "$2"
verify_max_args 2 "$@"
# Remove data container and config dir
docker rm -f "$VOLUME_CONTAINER" >/dev/null
rm -rf "$VOLUME_CONFIG_DIR"
info "Volume deleted: $VOLUME_NAME"
;;
volume:list)
verify_max_args 1 "$@"
# List volumes
mkdir -p "$VOLUME_ROOT"
ls -1 "$VOLUME_ROOT"
;;
volume:list:apps)
volume_info "$2"
verify_max_args 2 "$@"
# List apps linked to volume
if [[ -d "$VOLUME_CONFIG_DIR" ]]; then
ls -1 "$VOLUME_CONFIG_DIR"
else
fail "$VOLUME_NAME: volume doesn't exist"
fi
;;
volume:info)
volume_info "$2"
verify_max_args 2 "$@"
if [[ -f "$VOLUME_PATHS" ]]; then
cat "$VOLUME_PATHS"
else
fail "$VOLUME_NAME: volume doesn't exist"
fi
;;
volume:link)
verify_max_args 3 "$@"
if app_volume_info "$2" "$3"; then
info "Volume $VOLUME_NAME is already linked to application: $APP"
elif [[ -d "$VOLUME_CONFIG_DIR" ]]; then
touch "$VOLUME_APP_LINK"
info "Volume $VOLUME_NAME linked to application: $APP"
redeploy_app "$APP"
else
fail "$VOLUME_NAME: volume doesn't exist"
fi
;;
volume:unlink)
verify_max_args 3 "$@"
if app_volume_info "$2" "$3"; then
rm -f "$VOLUME_APP_LINK"
redeploy_app "$APP"
info "Volume $VOLUME_NAME unlinked from application: $APP"
elif [[ -d "$VOLUME_CONFIG_DIR" ]]; then
info "Volume $VOLUME_NAME is not linked to application: $APP"
else
fail "$VOLUME_NAME: volume doesn't exist"
fi
;;
help)
cat && cat<<EOF
volume:create <name> <paths...> Create a data volume for specified paths
volume:delete <name> Delete a data volume
volume:list List volumes
volume:list:apps <name> Display apps linked to volume
volume:info <name> Display volume information
volume:link <app> <name> Link volume to app
volume:unlink <app> <name> Unlink volume from app
EOF
;;
*)
exit $DOKKU_NOT_IMPLEMENTED_EXIT
;;
esac