-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathverification.sh
More file actions
executable file
·129 lines (119 loc) · 5.24 KB
/
verification.sh
File metadata and controls
executable file
·129 lines (119 loc) · 5.24 KB
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
#!/bin/sh
# This variable fixes mounts on Windows when user runs script with git-bash
export MSYS_NO_PATHCONV=1
LOGFILE="verification_"$(date +%Y-%m-%d_%H:%M:%S)".log"
echo "Welcome in verification script"
echo "If we find any issues they will be logged into file ${LOGFILE}"
echo "Please send this file to your tutor if you face any issues"
echo
DOCKER_VERSION=$(docker --version)
DOCKER__COMPOSE_VERSION=$(docker-compose --version)
echo "Docker version: ${DOCKER_VERSION}"
echo "Docker compose version: ${DOCKER__COMPOSE_VERSION}"
echo "Docker version: ${DOCKER_VERSION}" >> ${LOGFILE}
echo "Docker compose version: ${DOCKER__COMPOSE_VERSION}" >> ${LOGFILE}
echo "" >> ${LOGFILE}
pwd >> ${LOGFILE}
ls -la >> ${LOGFILE}
echo "" >> ${LOGFILE}
if [[ ${DOCKER_VERSION} =~ ^"Docker version" ]]; then
echo "Docker installation verification - passed"
else
echo "Docker installation is not done yet"
exit 1
fi
if [[ ${DOCKER__COMPOSE_VERSION} =~ ^"docker-compose version" ]]; then
echo "Docker-Compose installation verification - passed"
else
echo "Docker-Compose installation is not done yet"
exit 1
fi
HELLO_WORLD=$(docker run hello-world | head -n 2 | tail -n 1)
if [[ ${HELLO_WORLD} =~ ^"Hello from Docker" ]]; then
echo "Hello world verification - passed"
else
echo "Docker couldn't run helloworld container"
echo "You need to check your internet connection either"
echo "that you authorized Docker using your credentials"
exit 2
fi
VERIFICATION_NETWORK="docker-workshop-verification"
VERIFICATION_NGINX_NAME="docker_workshop_nginx_verification"
echo "# docker network create ${VERIFICATION_NETWORK}" >> ${LOGFILE}
docker network create ${VERIFICATION_NETWORK} >> ${LOGFILE}
NGINX_CONTAINER=$(docker run -d --rm --net=${VERIFICATION_NETWORK} --name=${VERIFICATION_NGINX_NAME} nginx)
NGINX_VERIFICATION=$(docker run --rm --net=${VERIFICATION_NETWORK} byrnedo/alpine-curl -s -o /dev/null -w "%{http_code}" http://${VERIFICATION_NGINX_NAME})
echo "# docker stop ${VERIFICATION_NGINX_NAME}" >> ${LOGFILE}
docker stop ${VERIFICATION_NGINX_NAME} >> ${LOGFILE}
echo "# docker network rm ${VERIFICATION_NETWORK}" >> ${LOGFILE}
docker network rm ${VERIFICATION_NETWORK} >> ${LOGFILE}
if [[ ${NGINX_VERIFICATION} == "200" ]]; then
echo "Nginx verification - passed"
else
echo "Nginx verification - failed"
exit 3
fi
VERIFICATION_NETWORK="docker-workshop-verification"
VERIFICATION_NGINX_NAME="docker_workshop_nginx_verification"
echo "# docker network create ${VERIFICATION_NETWORK}" >> ${LOGFILE}
docker network create ${VERIFICATION_NETWORK} >> ${LOGFILE}
NGINX_CONTAINER=$(docker run -d --rm --mount type=bind,source=$(pwd),target=/usr/share/nginx/html,readonly --net=${VERIFICATION_NETWORK} --name=${VERIFICATION_NGINX_NAME} nginx)
NGINX_VERIFICATION=$(docker run --rm --net=${VERIFICATION_NETWORK} byrnedo/alpine-curl -s -o /dev/null -w "%{http_code}" http://${VERIFICATION_NGINX_NAME}/docker-workshop.html)
echo "# docker stop ${VERIFICATION_NGINX_NAME}" >> ${LOGFILE}
docker stop ${VERIFICATION_NGINX_NAME} >> ${LOGFILE}
echo "# docker network rm ${VERIFICATION_NETWORK}" >> ${LOGFILE}
docker network rm ${VERIFICATION_NETWORK} >> ${LOGFILE}
if [[ ${NGINX_VERIFICATION} == "200" ]]; then
echo "File sharing verification - passed"
else
echo "File sharing verification - failed"
exit 4
fi
docker pull node:alpine >> ${LOGFILE}
COMPOSE_NPM_INSTALL="compose_npm_install"
echo "# docker run --rm -w="/app" --mount type=bind,source=$(pwd),target=/app --name=${COMPOSE_NPM_INSTALL} node:alpine npm install" >> ${LOGFILE}
docker run --rm -w="/app" \
--mount type=bind,source=$(pwd),target=/app \
--name=${COMPOSE_NPM_INSTALL} \
node:alpine \
npm install \
>> ${LOGFILE}
echo "# docker-compose up --detach --no-ansi " >> ${LOGFILE}
docker-compose --no-ansi up --detach --force-recreate --no-color >> ${LOGFILE} 2>&1
sleep 5
VERIFICATION_NETWORK="docker-training_compose-verification-net"
NODE_VERIFICATION=$(docker run --rm --net=${VERIFICATION_NETWORK} byrnedo/alpine-curl -s -o /dev/null -w "%{http_code}" http://app:80/)
echo "# docker-compose down" >> ${LOGFILE}
docker-compose --no-ansi down >> ${LOGFILE} 2>&1
if [[ ${NODE_VERIFICATION} == "200" ]]; then
echo "Docker-Compose - Nodejs verification - passed"
else
echo "Docker-Compose - Nodejs - failed"
exit 5
fi
echo "You're ready for the workshop. Happy coding!"
echo
echo "Now I want to download some Docker images useful for the workshop"
echo "It will save our time during workshop day"
echo "Download process can take some time, depending on your internet connection"
sleep 5
echo
echo "Trying to download nginx image"
docker pull nginx >> ${LOGFILE}
echo "Trying to download hello-world image"
docker pull hello-world >> ${LOGFILE}
echo "Trying to download mysql:5 image"
docker pull mysql:5 >> ${LOGFILE}
echo "Trying to download mysql:latest image"
docker pull mysql:latest >> ${LOGFILE}
echo "Trying to download alpine image"
docker pull alpine >> ${LOGFILE}
echo "Trying to download ubuntu image"
docker pull ubuntu >> ${LOGFILE}
echo "Trying to download node:alpine image"
docker pull node:alpine >> ${LOGFILE}
echo "Trying to download node:latest image"
docker pull node:latest >> ${LOGFILE}
echo "Trying to download wordpress:latest image"
docker pull wordpress:latest >> ${LOGFILE}
echo "Done"