@@ -2,19 +2,199 @@ language: python
22python :
33 - 2.7
44
5+ # ##
6+ # ## Add services
7+ # ##
58services :
69 - docker
710
11+
12+ # ##
13+ # ## Global variables
14+ # ##
15+ env :
16+ global :
17+ - MY_DOCKER_NAME="apache-2.4"
18+ - MYSQL_SOCKET_DIR=/tmp/mysql
19+
20+
21+ # ##
22+ # ## Install
23+ # ##
824install :
9- - docker build -t cytopia/apache-2.4 .
10- - docker run -d -p 127.0.0.1:80:80 --name apache-2.4 cytopia/apache-2.4
25+ - docker version
26+
27+ # Build my docker
28+ - docker build -t cytopia/${MY_DOCKER_NAME} .
29+
30+ # Pull docker dependencies
31+ - docker pull cytopia/php-fpm-5.6
32+ - docker pull cytopia/mysql-5.5
1133
12- # before_script:
13- # - pip install -r requirements.txt
14- # - pip install mock
15- # - pip install requests
16- # - pip install feedparser
34+ # Create directories
35+ - mkdir -p ~/www
36+ - mkdir -p ~/tmp/host-mysql-sock
37+ - chmod 777 ~/www
38+ - chmod 777 ~/tmp/host-mysql-sock
1739
40+ # Add html and php files
41+ - echo "Static Html" > ~/www/index.html
42+ - echo "<?php echo 'Helo world'; ?>" > ~/www/index.php
43+ - echo "<?php error_reporting(-1); ini_set('display_errors', 1); if (mysqli_connect('localhost', 'root', '')) { echo 'YES'; } else { echo 'NO ' . mysqli_connect_error(); }" > ~/www/mysql_loc.php
44+ - echo "<?php error_reporting(-1); ini_set('display_errors', 1); if (mysqli_connect('127.0.0.1', 'root', '')) { echo 'YES'; } else { echo 'NO ' . mysqli_connect_error(); }" > ~/www/mysql_127.php
45+ - echo "<?php error_reporting(-1); ini_set('display_errors', 1); if (mysqli_connect('mysql', 'root', '')) { echo 'YES'; } else { echo 'NO ' . mysqli_connect_error(); }" > ~/www/mysql_rem.php
46+ - echo "<?php error_reporting(-1); ini_set('display_errors', 1); if (mysqli_connect(gethostbyname('mysql'), 'root', '')) { echo 'YES'; } else { echo 'NO ' . mysqli_connect_error(); }" > ~/www/mysql_ip.php
47+
48+
49+
50+ # ##
51+ # ## Test
52+ # ##
1853script :
19- - docker ps | grep -q apache-2.4
20- # - python tests.py
54+
55+ # #
56+ # # 01.) Test plain docker
57+ # #
58+ - docker run -d -p 127.0.0.1:80:80 --name ${MY_DOCKER_NAME} cytopia/${MY_DOCKER_NAME}
59+ - docker ps
60+ - sleep 5
61+
62+ - curl localhost
63+ - curl localhost | grep 'It works'
64+
65+ - docker stop "$( docker ps | grep "${MY_DOCKER_NAME}" | awk '{print $1}' )"
66+ - docker rm "${MY_DOCKER_NAME}"
67+
68+
69+
70+ # #
71+ # # 02.) Test docker with external mounted directory
72+ # #
73+ - docker run -d -p 127.0.0.1:80:80 -v ~/www:/var/www/html --name ${MY_DOCKER_NAME} cytopia/${MY_DOCKER_NAME}
74+ - docker ps
75+ - sleep 5
76+
77+ - curl localhost
78+ - curl localhost | grep 'Static Html'
79+
80+ - curl http://localhost/index.php
81+ - curl http://localhost/index.php | grep '<?php'
82+
83+ - docker stop "$( docker ps | grep "${MY_DOCKER_NAME}" | awk '{print $1}' )"
84+ - docker rm "${MY_DOCKER_NAME}"
85+
86+
87+ # #
88+ # # 03.) Test docker with external mounted directory and PHP-FPM support
89+ # #
90+ - docker run -d
91+ -p 9000:9000
92+ -v ~/www:/var/www/html
93+ --name php cytopia/php-fpm-5.6
94+ - docker run
95+ -d -p 127.0.0.1:80:80
96+ -v ~/www:/var/www/html
97+ -e PHP_FPM_ENABLE=1
98+ -e PHP_FPM_SERVER_ADDR=php
99+ -e PHP_FPM_SERVER_PORT=9000
100+ --link php:php
101+ --name ${MY_DOCKER_NAME} cytopia/${MY_DOCKER_NAME}
102+ - docker ps
103+ - sleep 5
104+
105+ - curl localhost
106+ - curl localhost | grep 'Static Html'
107+
108+ - curl http://localhost/index.php
109+ - curl http://localhost/index.php | grep -q '<?php' && false || true
110+
111+ - docker stop "$( docker ps | grep "php" | awk '{print $1}' )"
112+ - docker stop "$( docker ps | grep "${MY_DOCKER_NAME}" | awk '{print $1}' )"
113+ - docker rm "php"
114+ - docker rm "${MY_DOCKER_NAME}"
115+
116+
117+ # #
118+ # # 04.) Test docker with external mounted directory and PHP-FPM support and MySQL support
119+ # #
120+ - docker network create -d bridge my_bridge && sleep 2
121+
122+ # MySQL
123+ - docker run
124+ -p 3306:3306
125+ -v ~/tmp/host-mysql-sock:${MYSQL_SOCKET_DIR}
126+ -e MYSQL_SOCKET_DIR=${MYSQL_SOCKET_DIR}
127+ -e MYSQL_ROOT_PASSWORD=
128+ --network=my_bridge
129+ --name mysql cytopia/mysql-5.5 &
130+ - sleep 15
131+
132+ # PHP
133+ - docker run
134+ -p 9000:9000
135+ -v ~/www:/var/www/html
136+ -v ~/tmp/host-mysql-sock:${MYSQL_SOCKET_DIR}
137+ -e FORWARD_MYSQL_PORT_TO_LOCALHOST=1
138+ -e MYSQL_REMOTE_ADDR=mysql
139+ -e MYSQL_REMOTE_PORT=3306
140+ -e MYSQL_LOCAL_PORT=3306
141+ -e MOUNT_MYSQL_SOCKET_TO_LOCALDISK=1
142+ -e MYSQL_SOCKET_PATH=${MYSQL_SOCKET_DIR}/mysqld.sock
143+ --network=my_bridge
144+ --link mysql
145+ --name php cytopia/php-fpm-5.6 &
146+ - sleep 15
147+
148+ # HTTP
149+ - docker run
150+ -p 127.0.0.1:80:80
151+ -v ~/www:/var/www/html
152+ -e PHP_FPM_ENABLE=1
153+ -e PHP_FPM_SERVER_ADDR=php
154+ -e PHP_FPM_SERVER_PORT=9000
155+ --network=my_bridge
156+ --link php
157+ --link mysql
158+ --name ${MY_DOCKER_NAME} cytopia/${MY_DOCKER_NAME} &
159+ - sleep 15
160+
161+ # Show information
162+ - docker ps
163+ - docker network ls
164+ - docker network inspect my_bridge
165+
166+ # Test connectivity
167+ - docker exec -ti php ping -c 1 mysql
168+ - docker exec -ti ${MY_DOCKER_NAME} ping -c 1 mysql
169+
170+ - docker exec -ti php ping -c 1 ${MY_DOCKER_NAME}
171+ - docker exec -ti mysql ping -c 1 ${MY_DOCKER_NAME}
172+
173+ - docker exec -ti ${MY_DOCKER_NAME} ping -c 1 php
174+ - docker exec -ti ${MY_DOCKER_NAME} ping -c 1 mysql
175+
176+ # Test webserver
177+ - curl localhost
178+ - curl localhost | grep 'Static Html'
179+
180+ - curl http://localhost/index.php
181+ - curl http://localhost/index.php | grep -q '<?php' && false || true
182+
183+ - curl http://localhost/mysql_loc.php
184+ - curl http://localhost/mysql_127.php
185+ - curl http://localhost/mysql_rem.php
186+ - curl http://localhost/mysql_ip.php
187+
188+ - curl http://localhost/mysql_loc.php | grep 'YES'
189+ - curl http://localhost/mysql_127.php | grep 'YES'
190+ - curl http://localhost/mysql_rem.php | grep 'YES'
191+ - curl http://localhost/mysql_ip.php | grep 'YES'
192+
193+ # Cleanup
194+ - docker stop "$( docker ps | grep "mysql" | awk '{print $1}' )"
195+ - docker stop "$( docker ps | grep "php" | awk '{print $1}' )"
196+ - docker stop "$( docker ps | grep "${MY_DOCKER_NAME}" | awk '{print $1}' )"
197+ - docker rm "mysql"
198+ - docker rm "php"
199+ - docker rm "${MY_DOCKER_NAME}"
200+ - docker network rm my_bridge
0 commit comments