-
Notifications
You must be signed in to change notification settings - Fork 0
/
docker-auto.sh
executable file
·126 lines (108 loc) · 3.19 KB
/
docker-auto.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
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
#!/usr/bin/env bash
set -e
SCRIPT_BASE_PATH=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
cd "$SCRIPT_BASE_PATH"
###############################################
# Extract Environment Variables from .env file
# Ex. REGISTRY_URL="$(getenv REGISTRY_URL)"
###############################################
getenv(){
local _env="$(printenv $1)"
echo "${_env:-$(cat .env | awk 'BEGIN { FS="="; } /^'$1'/ {sub(/\r/,"",$2); print $2;}')}"
}
DOCKER_COMPOSE_VERSION="1.29.2"
CONF_ARG="-f docker-compose.yml"
REGISTRY_URL="$(getenv REGISTRY_URL)"
########################################
# Install docker-compose
# DOCKER_COMPOSE_VERSION need to be set
########################################
install_docker_compose() {
sudo curl -L "https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_VERSION/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
return 0
}
if ! command -v docker-compose >/dev/null 2>&1; then
install_docker_compose || true
elif [[ "$(docker-compose version --short)" != "$DOCKER_COMPOSE_VERSION" ]]; then
install_docker_compose || true
fi
usage() {
echo "Usage: $(basename "$0") [MODE] [OPTIONS] [COMMAND]"
echo
echo "Mode:"
echo " --dev Development mode"
echo
echo "Options:"
echo " --help Show this help message"
echo
echo "Commands:"
echo " up Start the services"
echo " down Stop the services"
echo " ps Show the status of the services"
echo " logs Follow the logs on console"
echo " login Log in to a Docker registry"
echo " info SVN Info"
echo " remove-all Remove all containers"
echo " stop-all Stop all containers running"
echo " create-user Create a user-password pair to use inside the password file"
}
if [ $# -eq 0 ]; then
usage
exit 1
fi
for i in "$@"
do
case $i in
--dev)
CONF_ARG="-f docker-compose-dev.yml"
shift
;;
--help|-h)
usage
exit 1
;;
*)
break
;;
esac
done
echo "Arguments: $CONF_ARG"
echo "Command: $@"
if [ "$1" == "login" ]; then
docker login $REGISTRY_URL
exit 0
elif [ "$1" == "up" ]; then
docker-compose $CONF_ARG pull
docker-compose $CONF_ARG build --pull
docker-compose $CONF_ARG up -d --remove-orphans
exit 0
elif [ "$1" == "stop-all" ]; then
if [ -n "$(docker ps --format {{.ID}})" ]
then docker stop $(docker ps --format {{.ID}}); fi
exit 0
elif [ "$1" == "remove-all" ]; then
if [ -n "$(docker ps -a --format {{.ID}})" ]
then docker rm $(docker ps -a --format {{.ID}}); fi
exit 0
elif [ "$1" == "logs" ]; then
shift
docker-compose $CONF_ARG logs -f --tail 200 "$@"
exit 0
elif [ "$1" == "info" ]; then
shift
docker-compose $CONF_ARG run svn svn info file:///mnt/svn/repos
exit 0
elif [ "$1" == "create-user" ]; then
if [ $# -lt 3 ]; then
echo "Usage: $(basename "$0") create-user [USER] [PASSWORD]"
exit 1
fi
shift
#export BASIC_USER=$1
#export BASIC_PASSWORD=$2
docker-compose -f docker-compose-htpasswd.yml run htpasswd $1 $2
exit 0
fi
docker-compose $CONF_ARG "$@"