-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathdock
executable file
·132 lines (105 loc) · 2.89 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
#!/usr/bin/env bash
# Exit on errors
set -e
# Change working directory to the same location as this file.
cd "$(dirname ${BASH_SOURCE[0]})"
if [ -z "$CI" ]; then
source .env
fi
APP_ID=${APP_ID:-laraveldock}
APP_USER="root"
BUILD_DIR="build"
DOCKERFILE="${BUILD_DIR}/Dockerfile"
KUBERNETES_DEPLOYMENT="${BUILD_DIR}/kubernetes.yaml"
print_kubernetes_context() {
echo "Using Kubernetes context [$KUBERNETES_CONTEXT]"
}
if [ -z "$CI" ]; then
COMPOSE_PARAMS="-f ${BUILD_DIR}/docker-compose.local.yml --env-file .env";
else
COMPOSE_PARAMS="-f ${BUILD_DIR}/docker-compose.test.yml";
fi
COMPOSE="docker-compose --project-name ${APP_ID} ${COMPOSE_PARAMS}"
if [ -z "$CI" ]; then
RUN="docker run -it"
else
RUN="docker run"
fi
if [ $# -gt 0 ]; then
if [ "$1" == "up" ]; then
if [ -z "$CI" ]; then
${COMPOSE} up --build db redis web
else
${COMPOSE} up --detach web
fi
elif [ "$1" == "scheduler" ]; then
${COMPOSE} up --build scheduler
elif [ "$1" == "queue" ]; then
${COMPOSE} up --build queue
elif [ "$1" == "down" ]; then
${COMPOSE} down
elif [ "$1" == "restart" ]; then
./$0 down
./$0 up
elif [ "$1" == "build" ]; then
if [ -z "$2" ]; then
echo "Tag required"
exit
fi
docker build --file ${DOCKERFILE} --target production --tag $2 .
elif [ "$1" == "push" ]; then
if [ -z "$2" ]; then
echo "Tag required"
exit
fi
if docker login -u ${REGISTRY_USER} -p ${REGISTRY_PASSWORD} ${REGISTRY} > /dev/null 2>&1; then
docker push $2
else
echo "Login to registry failed for [${REGISTRY_USER}] at [${REGISTRY}]"
fi
elif [ "$1" == "deploy" ]; then
if [ -z "$2" ]; then
echo "Build ID required"
exit
fi
print_kubernetes_context
echo
read -p "Are you sure you want to deploy [$2]? (y/N) " -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
cat ${KUBERNETES_DEPLOYMENT} | sed "s/{{TAG}}/$2/g" | kubectl apply --context=${KUBERNETES_CONTEXT} -f -
echo
echo -e "Done! To view the status run:\n\n\t./dock status\n"
fi
elif [ "$1" == "status" ]; then
print_kubernetes_context
kubectl --context ${KUBERNETES_CONTEXT} get pods,deployments,statefulsets,hpa -o wide
elif [ "$1" == "tail" ]; then
$0 exec "cd storage/logs && tail -n 1000 -F laravel.log"
elif [ "$1" == "exec" ]; then
shift 1
ARGS="$@"
if [ -z "$CI" ]; then
${COMPOSE} exec --user ${APP_USER} web bash -c "$ARGS"
else
${COMPOSE} exec -T web bash -c "$ARGS"
fi
elif [ "$1" == "kubectl" ]; then
shift 1
ARGS="$@"
print_kubernetes_context
kubectl --context ${KUBERNETES_CONTEXT} ${ARGS}
elif [ "$1" == "test" ]; then
shift 1
ARGS="$@"
$0 exec "vendor/bin/phpunit $ARGS"
elif [ "$1" == "artisan" ]; then
shift 1
ARGS="$@"
$0 exec "php artisan $ARGS"
else
${COMPOSE} "$@"
fi
else
${COMPOSE} ps
fi