├── .gitignore
├── .gitmodules
├── Dockerfile
├── README.md
├── Vagrantfile
├── docker
├── htaccess
├── openstack
├── start
└── wordpress.sql
/.gitignore:
--------------------------------------------------------------------------------
1 | .vagrant
2 | openrc
3 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "wordpress"]
2 | path = wordpress
3 | url = git@github.com:paulczar/WordPress.git
4 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | # Creates wordpress install
2 | #
3 | # Author: Paul Czarkowski
4 | # Date: 08/11/2013
5 |
6 |
7 | FROM paulczar/apache2-php
8 | MAINTAINER Paul Czarkowski "paul@paulcz.net"
9 |
10 | RUN apt-get -y install php5-mysql
11 |
12 | ADD wordpress /var/www
13 | ADD start /wordpress/start
14 | RUN chmod 700 /wordpress/start
15 | ADD wordpress.sql /wordpress/wordpress.sql
16 |
17 | CMD ["/wordpress/start"]
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Docker Web Application Demo
2 |
3 | This demo is a lightweight bash script to bring together several Docker Containers to create a tiered web application like you would deploy to Amazon.
4 |
5 | It is as simple as running `./run_demo` and takes about 5 seconds to build the whole stack, 4 seconds of which are are artificial sleeps to allow mysql to keep up.
6 |
7 | An environment like this is perfect for testing major version changes, database schema changes, etc very quickly and easily during the development process.
8 |
9 | See the following Repos for the Docker buildfiles
10 |
11 | * https://github.com/paulczar/docker-wordpress
12 | * https://github.com/paulczar/docker-apache2
13 | * https://github.com/paulczar/docker-haproxy
14 | * https://github.com/paulczar/docker-mysql
15 |
16 | # Architecture
17 |
18 | ```
19 |
20 | | :80
21 | |
22 | --------------
23 | | HAProxy |
24 | --------------
25 | | |
26 | :80 / \ :80
27 | / \
28 | -------------- --------------
29 | | Apache/WP | | Apache/WP |
30 | -------------- --------------
31 | \ /
32 | :3306 \ / :3306
33 | --------------
34 | | HAProxy |
35 | --------------
36 | | |
37 | :3306 / \ :3306
38 | / \
39 | -------------- --------------
40 | | MySQL01 | | MySQL02 |
41 | -------------- --------------
42 | ^ ^
43 | |______________|
44 |
45 | Master <-> Master
46 | Replication
47 |
48 | ```
49 |
50 | # Requirements
51 |
52 | * Docker
53 | * Internet
54 |
55 |
56 | # Launch the Demo
57 |
58 | you may want to preload the docker containers
59 |
60 | ```
61 | docker pull paulczar/mysql
62 | docker pull paulczar/apache2-wordpress
63 | docker pull paulczar/haproxy-mysql
64 | docker pull paulczar/haproxy-web
65 | ```
66 |
67 | ## Vagrant Dev Environment
68 |
69 | `$ vagrant up`
70 |
71 | will launch the Vagrant dev environment.
72 |
73 | ## Docker Test Environment
74 |
75 | `$ source ./docker`
76 |
77 | will deploy a test environment in your local docker
78 |
79 | ## Openstack Prod Environment
80 |
81 | _needs to be the openstack docker - https://github.com/paulczar/cookbook-openstack-docker_
82 |
83 | `$ source ./openstack`
84 |
85 |
86 | # Output should look like
87 |
88 | ```
89 | Create MySQL Tier
90 | -----------------
91 | * Create MySQL01
92 | * Create MySQL02
93 | * Sleep for two seconds for servers to come online...
94 | * Creat replication user
95 | * Export Data from MySQL01 to MySQL02
96 | -- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.
97 | * Set MySQL01 as master on MySQL02
98 | * Set MySQL02 as master on MySQL01
99 | * Start Slave on both Servers
100 | * Create database 'wordpress' on MySQL01
101 | * Sleep 2 seconds, then check that database 'wordpress' exists on MySQL02
102 | wordpress
103 |
104 | Create MySQL Load Balancer
105 | --------------------------
106 | * Create HAProxy-MySQL
107 | * Check our haproxy works
108 | (should show alternating server_id)
109 | server_id 1
110 | server_id 2
111 | server_id 1
112 | server_id 2
113 |
114 | Create Wordpress Web Servers
115 | ------------------------
116 | * Create WordPress01
117 | * Create WordPress02
118 |
119 | Create Web Load Balancer
120 | --------------------------
121 | * Create HAProxy-Web
122 | * Check it works
123 |
PHP API | 20090626 |
124 | Environment Created!
125 | --------------------
126 |
127 | Browse to http://172.17.0.30 to access your wordpress site
128 |
129 | Variables available fo you :-
130 |
131 | MYSQL01_IP : 172.17.0.25
132 | MYSQL02_IP : 172.17.0.26
133 | HAPROXY_MYSQL_IP : 172.17.0.27
134 | WORDPRESS1_IP : 172.17.0.28
135 | WORDPRESS2_IP : 172.17.0.29
136 | HAPROXY_WEB_IP : 172.17.0.30
137 |
138 | ```
139 |
140 | # Authors
141 |
142 | Paul Czarkowski - paul@paulcz.net
143 |
144 | # License
145 |
146 | Copyright 2013 Paul Czarkowski
147 |
148 | Licensed under the Apache License, Version 2.0 (the "License");
149 | you may not use this file except in compliance with the License.
150 | You may obtain a copy of the License at
151 |
152 | http://www.apache.org/licenses/LICENSE-2.0
153 |
154 | Unless required by applicable law or agreed to in writing, software
155 | distributed under the License is distributed on an "AS IS" BASIS,
156 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
157 | See the License for the specific language governing permissions and
158 | limitations under the License.
159 |
--------------------------------------------------------------------------------
/Vagrantfile:
--------------------------------------------------------------------------------
1 | # -*- mode: ruby -*-
2 | # vi: set ft=ruby :
3 |
4 | require "vagrant"
5 |
6 | if Vagrant::VERSION < "1.2.1"
7 | raise "Use a newer version of Vagrant (1.2.1+)"
8 | end
9 |
10 |
11 | # Allows us to pick a different box by setting Environment Variables
12 | BOX_NAME = ENV['BOX_NAME'] || "precise64"
13 | BOX_URI = ENV['BOX_URI'] || "https://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_ubuntu-12.04_provisionerless.box"
14 |
15 | Vagrant.configure("2") do |config|
16 | # Cachier - speeds up subsequent runs.
17 | # vagrant plugin install vagrant-cachier
18 | config.cache.auto_detect = true
19 | #config.cache.enable_nfs = true
20 |
21 |
22 | config.vm.define :wordpress do |config|
23 | config.vm.hostname = "wordpress"
24 | config.vm.box = BOX_NAME
25 | config.vm.box_url = BOX_URI
26 | config.vm.synced_folder "wordpress", "/var/www"
27 | config.vm.network :private_network, ip: "33.33.33.33"
28 | config.vm.network :forwarded_port, guest: 80, host: 8080
29 | config.ssh.forward_agent = true
30 | config.vm.provision :shell, :inline => <<-SCRIPT
31 | apt-get update
32 | DEBIAN_FRONTEND=noninteractive apt-get -y -q install apache2 mysql-server php5-mysql php5 libapache2-mod-php5
33 | service apache2 restart
34 | /usr/bin/mysqladmin create wordpress
35 | [[ -e /vagrant/wordpress.sql ]] && /usr/bin/mysql wordpress < /vagrant/wordpress.sql
36 | echo you may want to run the following :-
37 | #echo "sudo su -c 'echo \"33.33.33.33 wordpress\" >> /etc/hosts'"
38 | echo "sudo sed -i 's/^.*wordpress.*$/33.33.33.33 wordpress/' /etc/hosts"
39 | SCRIPT
40 | config.vm.provider :virtualbox do |vb|
41 | vb.customize ["modifyvm", :id, "--cpus", 2]
42 | vb.customize ["modifyvm", :id, "--memory", 2048]
43 | end
44 | end
45 | end
46 |
--------------------------------------------------------------------------------
/docker:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | echo
4 | echo "Create MySQL Tier"
5 | echo "-----------------"
6 | echo "* Create MySQL01"
7 |
8 | MYSQL01=$(docker run -d paulczar/mysql mysqld_safe --server-id=1 --log-bin=mysql-bin --log-slave-updates=1 --auto_increment_increment=2 --auto_increment_offset=1)
9 | MYSQL01_IP=$(docker inspect $MYSQL01 | grep IPAd | awk -F'"' '{print $4}')
10 |
11 | echo "* Create MySQL02"
12 |
13 | MYSQL02=$(docker run -d paulczar/mysql mysqld_safe --server-id=2 --log-bin=mysql-bin --log-slave-updates=1 --auto_increment_increment=2 --auto_increment_offset=2)
14 | MYSQL02_IP=$(docker inspect $MYSQL02 | grep IPAd | awk -F'"' '{print $4}')
15 |
16 | echo "* Sleep for two seconds for servers to come online..."
17 | sleep 2
18 |
19 | echo "* Creat replication user"
20 |
21 | mysql -uroot -proot -h $MYSQL01_IP -AN -e 'GRANT REPLICATION SLAVE ON *.* TO "replication"@"%" IDENTIFIED BY "password";'
22 | mysql -uroot -proot -h $MYSQL01_IP -AN -e 'flush privileges;'
23 |
24 |
25 | echo "* Export Data from MySQL01 to MySQL02"
26 |
27 | mysqldump -uroot -proot -h $MYSQL01_IP --single-transaction --all-databases \
28 | --flush-privileges | mysql -uroot -proot -h $MYSQL02_IP
29 |
30 | echo "* Set MySQL01 as master on MySQL02"
31 |
32 | MYSQL01_Position=$(mysql -uroot -proot -h $MYSQL01_IP -e "show master status \G" | grep Position | awk '{print $2}')
33 | MYSQL01_File=$(mysql -uroot -proot -h $MYSQL01_IP -e "show master status \G" | grep File | awk '{print $2}')
34 |
35 | mysql -uroot -proot -h $MYSQL02_IP -AN -e "CHANGE MASTER TO master_host='$MYSQL01_IP', master_port=3306, \
36 | master_user='replication', master_password='password', master_log_file='$MYSQL01_File', \
37 | master_log_pos=$MYSQL01_Position;"
38 |
39 | echo "* Set MySQL02 as master on MySQL01"
40 |
41 | MYSQL02_Position=$(mysql -uroot -proot -h $MYSQL02_IP -e "show master status \G" | grep Position | awk '{print $2}')
42 | MYSQL02_File=$(mysql -uroot -proot -h $MYSQL02_IP -e "show master status \G" | grep File | awk '{print $2}')
43 |
44 | mysql -uroot -proot -h $MYSQL01_IP -AN -e "CHANGE MASTER TO master_host='$MYSQL02_IP', master_port=3306, \
45 | master_user='replication', master_password='password', master_log_file='$MYSQL02_File', \
46 | master_log_pos=$MYSQL02_Position;"
47 |
48 | echo "* Start Slave on both Servers"
49 | mysql -uroot -proot -h $MYSQL01_IP -AN -e "start slave;"
50 | mysql -uroot -proot -h $MYSQL02_IP -AN -e "start slave;"
51 |
52 | echo "* Create database 'wordpress' on MySQL01"
53 |
54 | mysql -uroot -proot -h $MYSQL01_IP -e "create database wordpress;"
55 |
56 | echo "* Load up Site SQL data"
57 |
58 | mysql -uroot -proot -h $MYSQL01_IP wordpress < wordpress.sql
59 |
60 | echo "* Sleep 2 seconds, then check that database 'wordpress' exists on MySQL02"
61 |
62 | sleep 2
63 | mysql -uroot -proot -h $MYSQL02_IP -e "show databases; \G" | grep wordpress
64 |
65 | echo
66 | echo "Create MySQL Load Balancer"
67 | echo "--------------------------"
68 |
69 | echo "* Create HAProxy-MySQL"
70 |
71 | mysql -uroot -proot -h $MYSQL01_IP -AN -e "GRANT USAGE ON *.* TO 'haproxy'@'%';"
72 |
73 | HAPROXY_MYSQL=$(docker run -d paulczar/haproxy-mysql /haproxy/start "$MYSQL01_IP:3306,$MYSQL02_IP:3306")
74 | HAPROXY_MYSQL_IP=$(docker inspect $HAPROXY_MYSQL | grep IPAd | awk -F'"' '{print $4}')
75 |
76 | echo "* Check our haproxy works"
77 | echo " (should show alternating server_id)"
78 |
79 | mysql -uroot -proot -h $HAPROXY_MYSQL_IP -e 'show variables like "server_id"' | grep server_id
80 | mysql -uroot -proot -h $HAPROXY_MYSQL_IP -e 'show variables like "server_id"' | grep server_id
81 | mysql -uroot -proot -h $HAPROXY_MYSQL_IP -e 'show variables like "server_id"' | grep server_id
82 | mysql -uroot -proot -h $HAPROXY_MYSQL_IP -e 'show variables like "server_id"' | grep server_id
83 |
84 | echo
85 | echo "Create Wordpress Web Servers"
86 | echo "------------------------"
87 |
88 | echo "* Create WordPress01"
89 | WORDPRESS1=$(docker run -d paulczar/apache2-wordpress /wordpress/start $HAPROXY_MYSQL_IP)
90 | WORDPRESS1_IP=$(docker inspect $WORDPRESS1 | grep IPAd | awk -F'"' '{print $4}')
91 |
92 | echo "* Create WordPress02"
93 | WORDPRESS2=$(docker run -d paulczar/apache2-wordpress /wordpress/start $HAPROXY_MYSQL_IP)
94 | WORDPRESS2_IP=$(docker inspect $WORDPRESS2 | grep IPAd | awk -F'"' '{print $4}')
95 |
96 | echo
97 | echo "Create Web Load Balancer"
98 | echo "--------------------------"
99 |
100 | echo "* Create HAProxy-Web"
101 | HAPROXY_WEB=$(docker run -d paulczar/haproxy-web /haproxy/start "$WORDPRESS1_IP:80,$WORDPRESS2_IP:80")
102 | HAPROXY_WEB_IP=$(docker inspect $HAPROXY_WEB | grep IPAd | awk -F'"' '{print $4}')
103 |
104 | echo "* Check it works"
105 |
106 | curl -s http://$HAPROXY_WEB_IP/phpinfo.php | grep "PHP API"
107 |
108 |
109 | echo "Environment Created!"
110 | echo "--------------------"
111 | echo
112 | echo "Browse to http://$HAPROXY_WEB_IP to access your wordpress site"
113 | echo
114 | echo Variables available fo you :-
115 | echo
116 | echo MYSQL01_IP : $MYSQL01_IP
117 | echo MYSQL02_IP : $MYSQL02_IP
118 | echo HAPROXY_MYSQL_IP : $HAPROXY_MYSQL_IP
119 | echo WORDPRESS1_IP : $WORDPRESS1_IP
120 | echo WORDPRESS2_IP : $WORDPRESS2_IP
121 | echo HAPROXY_WEB_IP : $HAPROXY_WEB_IP
122 | echo
123 | echo you may want to run the following :-
124 | #echo "sudo su -c 'echo \"$HAPROXY_WEB_IP wordpress\" >> /etc/hosts'"
125 | echo "sudo sed -i 's/^.*wordpress.*$/$HAPROXY_WEB_IP wordpress/' /etc/hosts"
126 |
--------------------------------------------------------------------------------
/htaccess:
--------------------------------------------------------------------------------
1 | DirectoryIndex index.php
--------------------------------------------------------------------------------
/openstack:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | [[ -e openrc ]] || echo "no openrc found"; exit 1
4 | source openrc
5 |
6 | #echo some basic house keeping
7 | #echo ------------------------
8 |
9 | #cho - Create really small flavor
10 | #FLAVOR_ID=42
11 | #nova flavor-create m1.demo $FLAVOR_ID 256 0 1
12 |
13 | #echo - add 3306 and 80 to default security group
14 | #nova secgroup-add-rule default tcp 3306 3306 0.0.0.0/0
15 | #nova secgroup-add-rule default tcp 80 80 0.0.0.0/0
16 |
17 | echo
18 | echo MySQL Servers
19 | echo -------------
20 | echo -n "- boot mysql01 ."
21 |
22 | tee /tmp/mysql01.txt < /dev/null
23 | #docker
24 | image: paulczar/mysql
25 | cmd: "mysqld_safe --server-id=1 --log-bin=mysql-bin --log-slave-updates=1 --auto_increment_increment=2 --auto_increment_offset=1"
26 | EOF
27 |
28 | MYSQL01_ID=$(nova boot --flavor m1.tiny --image docker mysql01 --user-data /tmp/mysql01.txt | grep '| id' | awk '{print $4}')
29 | until [ $(nova show $MYSQL01_ID | grep status | awk '{ print $4}') == "ACTIVE" ]; do
30 | sleep 1
31 | echo -n "."
32 | done
33 | MYSQL01_IP=$(nova show $MYSQL01_ID | grep 'public network' | awk '{print $5}')
34 | echo " - $MYSQL01_IP"
35 |
36 | echo -n "- boot mysql02 ."
37 |
38 | tee /tmp/mysql02.txt < /dev/null
39 | #docker
40 | image: paulczar/mysql
41 | cmd: "mysqld_safe --server-id=2 --log-bin=mysql-bin --log-slave-updates=1 --auto_increment_increment=2 --auto_increment_offset=2"
42 | EOF
43 |
44 |
45 | MYSQL02_ID=$(nova boot --flavor m1.tiny --image docker mysql02 --user-data /tmp/mysql02.txt | grep '| id' | awk '{print $4}')
46 | until [ $(nova show $MYSQL02_ID | grep status | awk '{ print $4}') == "ACTIVE" ]; do
47 | sleep 1
48 | echo -n "."
49 | done
50 | MYSQL02_IP=$(nova show $MYSQL02_ID | grep 'public network' | awk '{print $5}')
51 | echo " - $MYSQL02_IP"
52 |
53 | echo "- Sleep for a few seconds, give MySQL a chance to start"
54 | sleep 5
55 |
56 | echo "- Creat replication user"
57 |
58 | mysql -uroot -proot -h $MYSQL01_IP -AN -e 'GRANT REPLICATION SLAVE ON *.* TO "replication"@"%" IDENTIFIED BY "password";'
59 | mysql -uroot -proot -h $MYSQL01_IP -AN -e 'flush privileges;'
60 |
61 |
62 | echo "- Export Data from MySQL01 to MySQL02"
63 |
64 | mysqldump -uroot -proot -h $MYSQL01_IP --single-transaction --all-databases \
65 | --flush-privileges | mysql -uroot -proot -h $MYSQL02_IP
66 |
67 | echo "- Set MySQL01 as master on MySQL02"
68 |
69 | MYSQL01_Position=$(mysql -uroot -proot -h $MYSQL01_IP -e "show master status \G" | grep Position | awk '{print $2}')
70 | MYSQL01_File=$(mysql -uroot -proot -h $MYSQL01_IP -e "show master status \G" | grep File | awk '{print $2}')
71 |
72 | mysql -uroot -proot -h $MYSQL02_IP -AN -e "CHANGE MASTER TO master_host='$MYSQL01_IP', master_port=3306, \
73 | master_user='replication', master_password='password', master_log_file='$MYSQL01_File', \
74 | master_log_pos=$MYSQL01_Position;"
75 |
76 | echo "- Set MySQL02 as master on MySQL01"
77 |
78 | MYSQL02_Position=$(mysql -uroot -proot -h $MYSQL02_IP -e "show master status \G" | grep Position | awk '{print $2}')
79 | MYSQL02_File=$(mysql -uroot -proot -h $MYSQL02_IP -e "show master status \G" | grep File | awk '{print $2}')
80 |
81 | mysql -uroot -proot -h $MYSQL01_IP -AN -e "CHANGE MASTER TO master_host='$MYSQL02_IP', master_port=3306, \
82 | master_user='replication', master_password='password', master_log_file='$MYSQL02_File', \
83 | master_log_pos=$MYSQL02_Position;"
84 |
85 | echo "- Start Slave on both Servers"
86 | mysql -uroot -proot -h $MYSQL01_IP -AN -e "start slave;"
87 | mysql -uroot -proot -h $MYSQL02_IP -AN -e "start slave;"
88 |
89 | echo "- Create database 'wordpress' on MySQL01"
90 |
91 | mysql -uroot -proot -h $MYSQL01_IP -e "create database wordpress;"
92 |
93 | echo "- Fill it with data"
94 |
95 | mysql -uroot -proot -h $MYSQL01_IP wordpress < wordpress.sql
96 |
97 | echo "- Sleep 2 seconds, then check that database 'wordpress' exists on MySQL02"
98 |
99 | sleep 2
100 | mysql -uroot -proot -h $MYSQL02_IP -e "show databases; \G" | grep wordpress
101 |
102 |
103 | echo
104 | echo "Create MySQL Load Balancer"
105 | echo "--------------------------"
106 |
107 | echo -n "- Create HAProxy-MySQL"
108 |
109 | mysql -uroot -proot -h $MYSQL01_IP -AN -e "GRANT USAGE ON *.* TO 'haproxy'@'%';"
110 |
111 | tee /tmp/haproxy-mysql.txt < /dev/null
112 | #docker
113 | image: paulczar/haproxy-mysql
114 | cmd: /haproxy/start $MYSQL01_IP:3306,$MYSQL02_IP:3306
115 | EOF
116 |
117 | HAPROXY_MYSQL=$(nova boot --flavor m1.tiny --image docker haproxy-mysql --user-data /tmp/haproxy-mysql.txt | grep '| id' | awk '{print $4}')
118 | until [ $(nova show $HAPROXY_MYSQL | grep status | awk '{ print $4}') == "ACTIVE" ]; do
119 | sleep 1
120 | echo -n "."
121 | done
122 | HAPROXY_MYSQL_IP=$(nova show $HAPROXY_MYSQL | grep 'public network' | awk '{print $5}')
123 | echo " - $HAPROXY_MYSQL_IP"
124 |
125 | echo "- Check our haproxy works"
126 | echo " (should show alternating server_id)"
127 |
128 | mysql -uroot -proot -h $HAPROXY_MYSQL_IP -e 'show variables like "server_id"' | grep server_id
129 | mysql -uroot -proot -h $HAPROXY_MYSQL_IP -e 'show variables like "server_id"' | grep server_id
130 | mysql -uroot -proot -h $HAPROXY_MYSQL_IP -e 'show variables like "server_id"' | grep server_id
131 | mysql -uroot -proot -h $HAPROXY_MYSQL_IP -e 'show variables like "server_id"' | grep server_id
132 |
133 |
134 | echo
135 | echo "Create Wordpress Web Servers"
136 | echo "------------------------"
137 | echo -n "- Create WordPress01"
138 |
139 | tee /tmp/wordpress.txt < /dev/null
140 | #docker
141 | image: paulczar/apache2-wordpress
142 | cmd: /var/www/start $HAPROXY_MYSQL_IP
143 | EOF
144 |
145 | WORDPRESS1=$(nova boot --flavor m1.tiny --image docker wordpress01 --user-data /tmp/wordpress.txt | grep '| id' | awk '{print $4}')
146 | until [ $(nova show $WORDPRESS1 | grep status | awk '{ print $4}') == "ACTIVE" ]; do
147 | sleep 1
148 | echo -n "."
149 | done
150 |
151 | WORDPRESS1_IP=$(nova show $WORDPRESS1 | grep 'public network' | awk '{print $5}')
152 | echo " - $WORDPRESS1_IP"
153 |
154 | echo -n "- Create WordPress02"
155 |
156 | WORDPRESS2=$(nova boot --flavor m1.tiny --image docker wordpress02 --user-data /tmp/wordpress.txt | grep '| id' | awk '{print $4}')
157 | until [ $(nova show $WORDPRESS2 | grep status | awk '{ print $4}') == "ACTIVE" ]; do
158 | sleep 1
159 | echo -n "."
160 | done
161 | WORDPRESS2_IP=$(nova show $WORDPRESS2 | grep 'public network' | awk '{print $5}')
162 | echo " - $WORDPRESS2_IP"
163 |
164 | echo
165 | echo "Create Web Load Balancer"
166 | echo "--------------------------"
167 |
168 | echo -n "- Create HAProxy-Web"
169 |
170 | tee /tmp/haproxy-web.txt < /dev/null
171 | #docker
172 | image: paulczar/haproxy-web
173 | cmd: /haproxy/start $WORDPRESS1_IP:80,$WORDPRESS2_IP:80
174 | EOF
175 |
176 | HAPROXY_WEB=$(nova boot --flavor m1.tiny --image docker haproxy-web --user-data /tmp/haproxy-web.txt | grep '| id' | awk '{print $4}')
177 | until [ $(nova show $HAPROXY_WEB | grep status | awk '{ print $4}') == "ACTIVE" ]; do
178 | sleep 1
179 | echo -n "."
180 | done
181 | HAPROXY_WEB_IP=$(nova show $HAPROXY_WEB | grep 'public network' | awk '{print $5}')
182 |
183 |
184 | echo "- Check it works"
185 |
186 | curl -s http://$HAPROXY_WEB_IP/phpinfo.php | grep "PHP API"
187 |
188 |
189 | echo "Environment Created!"
190 | echo "--------------------"
191 | echo
192 | echo "Browse to http://$HAPROXY_WEB_IP to access your wordpress site"
193 | echo
194 | echo Server Details :-
195 | echo
196 | echo MYSQL01_IP : $MYSQL01_IP
197 | echo MYSQL02_IP : $MYSQL02_IP
198 | echo HAPROXY_MYSQL_IP : $HAPROXY_MYSQL_IP
199 | echo WORDPRESS1_IP : $WORDPRESS1_IP
200 | echo WORDPRESS2_IP : $WORDPRESS2_IP
201 | echo HAPROXY_WEB_IP : $HAPROXY_WEB_IP
202 | echo
203 | echo you may want to run the following :-
204 | echo "# sudo echo \"$HAPROXY_WEB_IP wordpress\" >> /etc/hosts"
--------------------------------------------------------------------------------
/start:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | DB_NAME=${DB_NAME:-"wordpress"}
4 | DB_USER=${DB_USER:-"root"}
5 | DB_PASSWORD=${DB_PASSWORD:-"root"}
6 | DB_HOST=${DB_HOST:-$1}
7 |
8 | tee /var/www/wp-config.php <
31 | EOF
32 |
33 | apache2 -D FOREGROUND
--------------------------------------------------------------------------------