-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdock
executable file
·142 lines (115 loc) · 2.48 KB
/
dock
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#!/usr/bin/env bash
##
# Docker environment manipulator
##
me=${0##*/}
my_version=1.1
my_name="Development environment manipulator v.$my_version"
HELP="$my_name
Usage:
$me [command] [argument(s)]
Options:
--help, -h Show this help
Commands:
up [container?] Spin up a container [?=all containers]
@hack: use '--build' as container name to rebuild everything
down [container?] Take down a container [?=all containers]
enter [container] Enter container's sh shell
exec [container] [command] Run a sh [command] directly on a [container]
ls List running docker containers
"
##
# Utilities
##
seek_help="@seek --help"
my_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
conf_dir="${my_dir}/_docker"
docker_network="dpml"
docker_compose="docker-compose -p $docker_network"
##
# Did you pass any options?
##
print_help() {
printf "%s\n" "$HELP"
exit 0
}
for arg in $*; do
case $arg in
--help|-h )
print_help
;;
esac
done
##
# Common script functions
##
inform_about_sudo() {
local is_sudo=$(sudo -n -v 2>&1);test -z "$A" || echo $A|grep -q asswor
if [ ! -z "$is_sudo" ]; then
inform "Some commands require sudo."
fi
sudo -v
}
say() {
echo -en "$1"
}
say_done() {
say "\033[0;32mdone\033[0m\n"
}
inform() {
echo -e "\n ⚡ \033[0;36m${1}\033[0m\n"
}
##
# Dispatcher
##
command=$1
case $command in
ls )
inform_about_sudo
sudo docker ps -a --filter "name=${docker_network}_"
;;
enter )
container=$2
cd $conf_dir
if [ -z "$container" ]; then
say "Please specify the container name\n${seek_help}\n"
exit 1
fi
inform_about_sudo
sudo $docker_compose exec $container sh
;;
exec )
container=$2
command=$3
cd $conf_dir
if [ -z "$container" ]; then
say "Please specify the container name\n${seek_help}\n"
exit 1
fi
if [ -z "$command" ]; then
say "What command should I run?\n${seek_help}\n"
exit 1
fi
inform_about_sudo
sudo $docker_compose exec $container sh -c "$command"
;;
up )
inform_about_sudo
container=$2
cd $conf_dir
sudo $docker_compose up -d $container
;;
down )
inform_about_sudo
container=$2
cd $conf_dir
if [ -z $container ]; then
sudo $docker_compose down
else
sudo $docker_compose stop $container
fi
;;
* )
echo -e "$my_name\n${seek_help}"
;;
esac