-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun
176 lines (174 loc) · 4.2 KB
/
run
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#!/usr/bin/env bash
set -e
DOCKER_DIR=.docker
ok () {
echo -e "\e[32mdone\e[0m"
}
docker_compose_run_app () {
docker_compose run --rm --no-deps app "$@"
}
##> yarn ##
docker_compose_run_yarn () {
docker_compose_run_app yarn "$@"
}
yarn_install () {
docker_compose_run_yarn install
}
yarn_test () {
docker_compose_run_yarn test --detectOpenHandles
}
yarn_check () {
docker_compose_run_yarn lint
}
##< yarn ##
##> Share services ##
docker_compose_shared_service () {
docker_compose -f docker-compose-shared-services.yml "$@"
}
shared_service_start () {
docker_compose_shared_service up -d --force-recreate --build
}
shared_service_erase () {
shared_service_stop
docker_compose_shared_service down --volumes --remove-orphans
}
shared_service_stop () {
docker_compose_shared_service stop
}
shared_service_logs () {
docker_compose_shared_service -f docker-compose-shared-services.yml logs "$@"
}
shared_service_ps () {
docker_compose_shared_service ps
}
##< Share services ##
create_docker_compose_env () {
local -r override="$1"
if [[ $override -eq 0 && -f $DOCKER_DIR/.env ]]; then
return 0
fi
echo -e "\e[32mCreating .docker/.env ... \e[0m"
cp "$DOCKER_DIR"/.env.dist "$DOCKER_DIR"/.env
if [[ $(id -u) == 0 ]]; then
{
echo DOCKER_UID=1000;
echo DOCKER_GID=1000;
} >> "$DOCKER_DIR"/.env
else
{
echo DOCKER_UID="$(id -u)";
echo DOCKER_GID="$(id -g)";
} >> "$DOCKER_DIR"/.env
fi
ok
}
create_network () {
if ! docker network inspect return_go_network &>/dev/null
then
echo -e "\e[32mCreating network return_go_network ... \e[0m"
docker network create return_go_network || true
ok
fi
}
remove_network () {
if docker network inspect return_go_network &>/dev/null
then
echo -e "\e[32mRemove network return_go_network ... \e[0m"
docker network rm return_go_network || true
ok
fi
}
docker_compose () {
cd "$DOCKER_DIR"
docker compose "$@"
cd ..
}
docker_compose_start () {
shared_service_start
docker_compose up -d --force-recreate --build
}
docker_compose_stop () {
docker_compose stop
shared_service_stop
}
docker_compose_erase () {
docker_compose_stop
docker_compose rm -fsv
remove_network
}
docker_build_image () {
if [ -f $DOCKER_DIR/.env ]
then
export $(cat $DOCKER_DIR/.env | grep -v '#' | awk '/=/ {print $1}')
fi
local -r force="$3"
local docker_url="${DOCKER_SERVER_HOST}/${DOCKER_PROJECT_PATH}"
local tag_name="$docker_url/$1-$DOCKER_IMAGE_VERSION"
echo -e "\e[32mBuild image $tag_name ... \e[0m"
[[ $force -eq 1 ]] && nocache="--no-cache" || nocache=""
docker build $DOCKER_DIR/$1 \
--tag $tag_name \
--build-arg DOCKER_SERVER_HOST=$DOCKER_SERVER_HOST \
--build-arg DOCKER_PROJECT_PATH=$DOCKER_PROJECT_PATH \
--build-arg DOCKER_NODE_VERSION=$DOCKER_NODE_VERSION \
--build-arg DOCKER_IMAGE_VERSION=$DOCKER_IMAGE_VERSION \
--build-arg DOCKER_UID=$DOCKER_UID \
--build-arg DOCKER_GID=$DOCKER_GID \
--build-arg NODE_ENV=$NODE_ENV \
$nocache
ok
}
docker_build () {
docker_build_image node-base "$1"
docker_build_image node-dev "$1"
}
case $1 in
start)
if [[ ! -f ./.env && -f ./.env.dist ]]; then
cp ./.env.dist ./.env
fi
create_network
create_docker_compose_env 0
docker_build 0
if [[ ! -d ./node_modules ]]; then
yarn_install
fi
docker_compose_start
;;
stop)
docker_compose_stop
remove_network
;;
rebuild)
docker_build 1
;;
restart)
docker_compose_stop
docker_compose_start
;;
logs)
docker_compose logs "${@:2}"
;;
shared-logs)
shared_service_logs "${@:2}"
;;
shared-start)
create_network
shared_service_start
;;
shared-stop)
shared_service_stop
;;
check)
yarn_check
;;
test)
yarn_test
;;
exec)
docker_compose exec "${@:2}"
;;
*)
docker_compose_run_app "${@:1}"
;;
esac