diff --git a/docker b/docker index 52f7bc4..4b9988e 100755 --- a/docker +++ b/docker @@ -1,66 +1,79 @@ #!/bin/bash +#~/kklepper/docker-wordpress$ nano docker + +# to get rid of MySQL warnings "Warning: Using a password on the command line interface can be insecure." + +echo +echo "Create credentials" + +credentialsFile=~/.docker-wordpress-credentials.cnf +echo "[client]" > $credentialsFile +echo "user=root" >> $credentialsFile +echo "password=root" >> $credentialsFile + echo echo "Create MySQL Tier" echo "-----------------" echo "* Create MySQL01" -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) -MYSQL01_IP=$(docker inspect $MYSQL01 | grep IPAd | awk -F'"' '{print $4}') +MYSQL01=$(docker run -d --name m1 paulczar/mysql mysqld_safe --server-id=1 --log-bin=mysql-bin --log-slave-updates=1 --auto_increment_increment=2 --auto_increment_offset=1) +MYSQL01_IP=$(docker inspect -f '{{ .NetworkSettings.Networks.bridge.IPAddress }}' $MYSQL01) +# new docker syntax echo "* Create MySQL02" -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) -MYSQL02_IP=$(docker inspect $MYSQL02 | grep IPAd | awk -F'"' '{print $4}') +MYSQL02=$(docker run -d --name m2 paulczar/mysql mysqld_safe --server-id=2 --log-bin=mysql-bin --log-slave-updates=1 --auto_increment_increment=2 --auto_increment_offset=2) +MYSQL02_IP=$(docker inspect -f '{{ .NetworkSettings.Networks.bridge.IPAddress }}' $MYSQL02) +# new docker syntax echo "* Sleep for two seconds for servers to come online..." sleep 2 -echo "* Creat replication user" - -mysql -uroot -proot -h $MYSQL01_IP -AN -e 'GRANT REPLICATION SLAVE ON *.* TO "replication"@"%" IDENTIFIED BY "password";' -mysql -uroot -proot -h $MYSQL01_IP -AN -e 'flush privileges;' +echo "* Create replication user" +mysql --defaults-extra-file=$credentialsFile -h $MYSQL01_IP -AN -e 'GRANT REPLICATION SLAVE ON *.* TO "replication"@"%" IDENTIFIED BY "password";' +mysql --defaults-extra-file=$credentialsFile -h $MYSQL01_IP -AN -e 'flush privileges;' echo "* Export Data from MySQL01 to MySQL02" -mysqldump -uroot -proot -h $MYSQL01_IP --single-transaction --all-databases \ - --flush-privileges | mysql -uroot -proot -h $MYSQL02_IP +mysqldump --defaults-extra-file=$credentialsFile -h $MYSQL01_IP --single-transaction --all-databases \ + --flush-privileges | mysql --defaults-extra-file=$credentialsFile -h $MYSQL02_IP echo "* Set MySQL01 as master on MySQL02" -MYSQL01_Position=$(mysql -uroot -proot -h $MYSQL01_IP -e "show master status \G" | grep Position | awk '{print $2}') -MYSQL01_File=$(mysql -uroot -proot -h $MYSQL01_IP -e "show master status \G" | grep File | awk '{print $2}') +MYSQL01_Position=$(mysql --defaults-extra-file=$credentialsFile -h $MYSQL01_IP -e "show master status \G" | grep Position | awk '{print $2}') +MYSQL01_File=$(mysql --defaults-extra-file=$credentialsFile -h $MYSQL01_IP -e "show master status \G" | grep File | awk '{print $2}') -mysql -uroot -proot -h $MYSQL02_IP -AN -e "CHANGE MASTER TO master_host='$MYSQL01_IP', master_port=3306, \ +mysql --defaults-extra-file=$credentialsFile -h $MYSQL02_IP -AN -e "CHANGE MASTER TO master_host='$MYSQL01_IP', master_port=3306, \ master_user='replication', master_password='password', master_log_file='$MYSQL01_File', \ master_log_pos=$MYSQL01_Position;" echo "* Set MySQL02 as master on MySQL01" -MYSQL02_Position=$(mysql -uroot -proot -h $MYSQL02_IP -e "show master status \G" | grep Position | awk '{print $2}') -MYSQL02_File=$(mysql -uroot -proot -h $MYSQL02_IP -e "show master status \G" | grep File | awk '{print $2}') +MYSQL02_Position=$(mysql --defaults-extra-file=$credentialsFile -h $MYSQL02_IP -e "show master status \G" | grep Position | awk '{print $2}') +MYSQL02_File=$(mysql --defaults-extra-file=$credentialsFile -h $MYSQL02_IP -e "show master status \G" | grep File | awk '{print $2}') -mysql -uroot -proot -h $MYSQL01_IP -AN -e "CHANGE MASTER TO master_host='$MYSQL02_IP', master_port=3306, \ +mysql --defaults-extra-file=$credentialsFile -h $MYSQL01_IP -AN -e "CHANGE MASTER TO master_host='$MYSQL02_IP', master_port=3306, \ master_user='replication', master_password='password', master_log_file='$MYSQL02_File', \ master_log_pos=$MYSQL02_Position;" echo "* Start Slave on both Servers" -mysql -uroot -proot -h $MYSQL01_IP -AN -e "start slave;" -mysql -uroot -proot -h $MYSQL02_IP -AN -e "start slave;" +mysql --defaults-extra-file=$credentialsFile -h $MYSQL01_IP -AN -e "start slave;" +mysql --defaults-extra-file=$credentialsFile -h $MYSQL02_IP -AN -e "start slave;" echo "* Create database 'wordpress' on MySQL01" -mysql -uroot -proot -h $MYSQL01_IP -e "create database wordpress;" +mysql --defaults-extra-file=$credentialsFile -h $MYSQL01_IP -e "create database wordpress;" echo "* Load up Site SQL data" -mysql -uroot -proot -h $MYSQL01_IP wordpress < wordpress.sql +mysql --defaults-extra-file=$credentialsFile -h $MYSQL01_IP wordpress < wordpress.sql echo "* Sleep 2 seconds, then check that database 'wordpress' exists on MySQL02" sleep 2 -mysql -uroot -proot -h $MYSQL02_IP -e "show databases; \G" | grep wordpress +mysql --defaults-extra-file=$credentialsFile -h $MYSQL02_IP -e "show databases; \G" | grep wordpress echo echo "Create MySQL Load Balancer" @@ -68,18 +81,19 @@ echo "--------------------------" echo "* Create HAProxy-MySQL" -mysql -uroot -proot -h $MYSQL01_IP -AN -e "GRANT USAGE ON *.* TO 'haproxy'@'%';" +mysql --defaults-extra-file=$credentialsFile -h $MYSQL01_IP -AN -e "GRANT USAGE ON *.* TO 'haproxy'@'%';" HAPROXY_MYSQL=$(docker run -d paulczar/haproxy-mysql /haproxy/start "$MYSQL01_IP:3306,$MYSQL02_IP:3306") -HAPROXY_MYSQL_IP=$(docker inspect $HAPROXY_MYSQL | grep IPAd | awk -F'"' '{print $4}') +HAPROXY_MYSQL_IP=$(docker inspect -f '{{ .NetworkSettings.Networks.bridge.IPAddress }}' $HAPROXY_MYSQL) +# new docker syntax echo "* Check our haproxy works" echo " (should show alternating server_id)" -mysql -uroot -proot -h $HAPROXY_MYSQL_IP -e 'show variables like "server_id"' | grep server_id -mysql -uroot -proot -h $HAPROXY_MYSQL_IP -e 'show variables like "server_id"' | grep server_id -mysql -uroot -proot -h $HAPROXY_MYSQL_IP -e 'show variables like "server_id"' | grep server_id -mysql -uroot -proot -h $HAPROXY_MYSQL_IP -e 'show variables like "server_id"' | grep server_id +mysql --defaults-extra-file=$credentialsFile -h $HAPROXY_MYSQL_IP -e 'show variables like "server_id"' | grep server_id +mysql --defaults-extra-file=$credentialsFile -h $HAPROXY_MYSQL_IP -e 'show variables like "server_id"' | grep server_id +mysql --defaults-extra-file=$credentialsFile -h $HAPROXY_MYSQL_IP -e 'show variables like "server_id"' | grep server_id +mysql --defaults-extra-file=$credentialsFile -h $HAPROXY_MYSQL_IP -e 'show variables like "server_id"' | grep server_id echo echo "Create Wordpress Web Servers" @@ -87,29 +101,38 @@ echo "------------------------" echo "* Create WordPress01" WORDPRESS1=$(docker run -d paulczar/apache2-wordpress /wordpress/start $HAPROXY_MYSQL_IP) -WORDPRESS1_IP=$(docker inspect $WORDPRESS1 | grep IPAd | awk -F'"' '{print $4}') +WORDPRESS1_IP=$(docker inspect -f '{{ .NetworkSettings.Networks.bridge.IPAddress }}' $WORDPRESS1) +# new docker syntax echo "* Create WordPress02" WORDPRESS2=$(docker run -d paulczar/apache2-wordpress /wordpress/start $HAPROXY_MYSQL_IP) -WORDPRESS2_IP=$(docker inspect $WORDPRESS2 | grep IPAd | awk -F'"' '{print $4}') +WORDPRESS2_IP=$(docker inspect -f '{{ .NetworkSettings.Networks.bridge.IPAddress }}' $WORDPRESS2) +# new docker syntax echo echo "Create Web Load Balancer" echo "--------------------------" echo "* Create HAProxy-Web" -HAPROXY_WEB=$(docker run -d paulczar/haproxy-web /haproxy/start "$WORDPRESS1_IP:80,$WORDPRESS2_IP:80") -HAPROXY_WEB_IP=$(docker inspect $HAPROXY_WEB | grep IPAd | awk -F'"' '{print $4}') - -echo "* Check it works" - -curl -s http://$HAPROXY_WEB_IP/phpinfo.php | grep "PHP API" +HAPROXY_WEB=$(docker run -p 80:80 -d paulczar/haproxy-web /haproxy/start "$WORDPRESS1_IP:80,$WORDPRESS2_IP:80") +HAPROXY_WEB_IP=$(docker inspect -f '{{ .NetworkSettings.Networks.bridge.IPAddress }}' $HAPROXY_WEB) +# new docker syntax +echo "* Check it works ------------ (should show alternating container id) ----------" +curl -s http://$HAPROXY_WEB_IP/phpinfo.php | grep "HOSTNAME" | awk '{print $4}' | awk -F\> '{printf "container ID (HOSTNAME): %s\n", $2}' +curl -s http://$HAPROXY_WEB_IP/phpinfo.php | grep "HOSTNAME" | awk '{print $4}' | awk -F\> '{printf "container ID (HOSTNAME): %s\n", $2}' +curl -s http://$HAPROXY_WEB_IP/phpinfo.php | grep "HOSTNAME" | awk '{print $4}' | awk -F\> '{printf "container ID (HOSTNAME): %s\n", $2}' +curl -s http://$HAPROXY_WEB_IP/phpinfo.php | grep "HOSTNAME" | awk '{print $4}' | awk -F\> '{printf "container ID (HOSTNAME): %s\n", $2}' +#curl -s http://$HAPROXY_WEB_IP/phpinfo.php | grep "PHP API" +echo "--------------------" echo "Environment Created!" echo "--------------------" echo -echo "Browse to http://$HAPROXY_WEB_IP to access your wordpress site" +echo "Browse to http://$HAPROXY_WEB_IP" +echo "--- or to your public IP to access your wordpress site" +echo "--- may look bad due to incorrect link to wordpress css file: " +echo "--- http://wordpress/wp-content/themes/twentythirteen/style.css?ver=2013-07-18" echo echo Variables available fo you :- echo