-
-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathinit-environment.sh
executable file
·154 lines (134 loc) · 4.06 KB
/
init-environment.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
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
#!/usr/bin/env bash
MYSQL_VERSION="9.1.0"
POSTGRES_VERSION="13.16"
MONGO_VERSION="8.0.3"
KEYCLOAK_VERSION="26.0.7"
KONG_VERSION="2.8.4"
BOOK_SERVICE_VERSION="1.0.0"
if [[ "$(docker images -q ivanfranchin/book-service:${BOOK_SERVICE_VERSION} 2> /dev/null)" == "" ]] ; then
echo "[WARNING] Before initialize the environment, build the book-service Docker image: ./docker-build.sh [native]"
exit 1
fi
source scripts/my-functions.sh
echo
echo "Starting environment"
echo "===================="
echo
echo "Creating network"
echo "----------------"
docker network create springboot-kong-keycloak-net
echo
echo "Starting keycloak-database"
echo "--------------------------"
docker run -d \
--name keycloak-database \
-e MYSQL_DATABASE=keycloak \
-e MYSQL_USER=keycloak \
-e MYSQL_PASSWORD=password \
-e MYSQL_ROOT_PASSWORD=root_password \
--restart=unless-stopped \
--network=springboot-kong-keycloak-net \
--health-cmd="mysqladmin ping -u root -p$${MYSQL_ROOT_PASSWORD}" \
mysql:${MYSQL_VERSION}
echo
echo "Starting kong-database"
echo "----------------------"
docker run -d \
--name kong-database \
-e POSTGRES_USER=kong \
-e POSTGRES_PASSWORD=kong \
-e POSTGRES_DB=kong \
--restart=unless-stopped \
--network=springboot-kong-keycloak-net \
--health-cmd="pg_isready -U postgres" \
postgres:${POSTGRES_VERSION}
echo
echo "Starting mongodb"
echo "----------------"
docker run -d \
--name mongodb \
--restart=unless-stopped \
--network=springboot-kong-keycloak-net \
--health-cmd="echo 'db.stats().ok' | mongosh localhost:27017/bookdb --quiet" \
mongo:${MONGO_VERSION}
echo
wait_for_container_log "mongodb" "Waiting for connections"
echo
wait_for_container_log "kong-database" "port 5432"
echo
wait_for_container_log "keycloak-database" "port: 3306"
echo
echo "Starting keycloak"
echo "-----------------"
docker run -d \
--name keycloak \
-p 8080:8080 \
-e KC_BOOTSTRAP_ADMIN_USERNAME=admin \
-e KC_BOOTSTRAP_ADMIN_PASSWORD=admin \
-e KC_DB=mysql \
-e KC_DB_URL_HOST=keycloak-database \
-e KC_DB_URL_DATABASE=keycloak \
-e KC_DB_USERNAME=keycloak \
-e KC_DB_PASSWORD=password \
--restart=unless-stopped \
--network=springboot-kong-keycloak-net \
--health-cmd="curl -f http://localhost:8080/health/ready || exit 1" \
quay.io/keycloak/keycloak:${KEYCLOAK_VERSION} start-dev
echo
echo "Starting book-service"
echo "---------------------"
docker run -d \
--name book-service \
-e MONGODB_HOST=mongodb \
--restart=unless-stopped \
--network=springboot-kong-keycloak-net \
--health-cmd="curl -f http://localhost:9080/actuator/health || exit 1" \
ivanfranchin/book-service:${BOOK_SERVICE_VERSION}
echo
echo "Running kong-database migration"
echo "-------------------------------"
docker run --rm \
--name kong-database-migration \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_PASSWORD=kong" \
--network=springboot-kong-keycloak-net \
kong:${KONG_VERSION} kong migrations bootstrap
if [[ "$(docker images -q kong:${KONG_VERSION}-oidc 2> /dev/null)" == "" ]]; then
echo
echo "Building kong docker image with kong-oidc plugin"
echo "------------------------------------------------"
docker build -t kong:${KONG_VERSION}-oidc docker/kong
fi
echo
echo "Starting kong"
echo "-------------"
docker run -d \
--name kong \
-p 8000:8000 \
-p 8443:8443 \
-p 8001:8001 \
-p 8444:8444 \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_PASSWORD=kong" \
-e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
-e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
-e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_LISTEN=0.0.0.0:8001" \
-e "KONG_ADMIN_LISTEN_SSL=0.0.0.0:8444" \
-e "KONG_PLUGINS=bundled,oidc" \
--restart=unless-stopped \
--network=springboot-kong-keycloak-net \
kong:${KONG_VERSION}-oidc
echo
wait_for_container_log "kong" "finished preloading"
echo
wait_for_container_log "book-service" "Started"
echo
wait_for_container_log "keycloak" "started in"
echo
echo "Environment Up and Running"
echo "=========================="
echo