Skip to content
This repository was archived by the owner on Nov 29, 2020. It is now read-only.

Commit b2b6f72

Browse files
committed
Merge branch 'staging'
2 parents c80dc70 + 48cf17c commit b2b6f72

File tree

7 files changed

+140
-100
lines changed

7 files changed

+140
-100
lines changed

5.5/Dockerfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ ENV REPLICATION_SLAVE **False**
3333
ENV REPLICATION_USER replica
3434
ENV REPLICATION_PASS replica
3535

36+
# ON_CREATE_SCRIPT
37+
ENV ON_CREATE_DB **False**
38+
3639
# Add VOLUMEs to allow backup of config and databases
3740
VOLUME ["/etc/mysql", "/var/lib/mysql"]
3841

5.5/run.sh

Lines changed: 61 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
#!/bin/bash
22

3+
set -m
4+
set -e
5+
36
VOLUME_HOME="/var/lib/mysql"
47
CONF_FILE="/etc/mysql/conf.d/my.cnf"
58
LOG="/var/log/mysql/error.log"
@@ -11,33 +14,30 @@ chmod 644 /etc/mysql/conf.d/mysqld_charset.cnf
1114
StartMySQL ()
1215
{
1316
/usr/bin/mysqld_safe > /dev/null 2>&1 &
14-
1517
# Time out in 1 minute
16-
LOOP_LIMIT=13
18+
LOOP_LIMIT=60
1719
for (( i=0 ; ; i++ )); do
1820
if [ ${i} -eq ${LOOP_LIMIT} ]; then
1921
echo "Time out. Error log is shown as below:"
2022
tail -n 100 ${LOG}
2123
exit 1
2224
fi
2325
echo "=> Waiting for confirmation of MySQL service startup, trying ${i}/${LOOP_LIMIT} ..."
24-
sleep 5
26+
sleep 1
2527
mysql -uroot -e "status" > /dev/null 2>&1 && break
2628
done
2729
}
2830

2931
CreateMySQLUser()
3032
{
31-
StartMySQL
32-
33-
#Setup DB
34-
if [ "$ON_CREATE_DB" = "**False**" ]; then
35-
unset ON_CREATE_DB
36-
else
37-
echo "Creating MySQL database ${ON_CREATE_DB}"
38-
mysql -uroot -e "CREATE DATABASE IF NOT EXISTS ${ON_CREATE_DB};"
39-
echo "Database created!"
40-
fi
33+
#Setup DB
34+
if [ "$ON_CREATE_DB" = "**False**" ]; then
35+
unset ON_CREATE_DB
36+
else
37+
echo "Creating MySQL database ${ON_CREATE_DB}"
38+
mysql -uroot -e "CREATE DATABASE IF NOT EXISTS ${ON_CREATE_DB};"
39+
echo "Database created!"
40+
fi
4141

4242
if [ "$MYSQL_PASS" = "**Random**" ]; then
4343
unset MYSQL_PASS
@@ -49,10 +49,7 @@ CreateMySQLUser()
4949

5050
mysql -uroot -e "CREATE USER '${MYSQL_USER}'@'%' IDENTIFIED BY '$PASS'"
5151
mysql -uroot -e "GRANT ALL PRIVILEGES ON *.* TO '${MYSQL_USER}'@'%' WITH GRANT OPTION"
52-
53-
5452
echo "=> Done!"
55-
5653
echo "========================================================================"
5754
echo "You can now connect to this MySQL Server using:"
5855
echo ""
@@ -61,20 +58,14 @@ CreateMySQLUser()
6158
echo "Please remember to change the above password as soon as possible!"
6259
echo "MySQL user 'root' has no password but only allows local connections"
6360
echo "========================================================================"
64-
65-
mysqladmin -uroot shutdown
6661
}
6762

6863
ImportSql()
6964
{
70-
StartMySQL
71-
7265
for FILE in ${STARTUP_SQL}; do
7366
echo "=> Importing SQL file ${FILE}"
7467
mysql -uroot < "${FILE}"
7568
done
76-
77-
mysqladmin -uroot shutdown
7869
}
7970

8071
# Main
@@ -86,6 +77,39 @@ if [ ${REPLICATION_SLAVE} == "**False**" ]; then
8677
unset REPLICATION_SLAVE
8778
fi
8879

80+
# Set MySQL REPLICATION - MASTER
81+
if [ -n "${REPLICATION_MASTER}" ]; then
82+
echo "=> Configuring MySQL replication as master (1/2) ..."
83+
if [ ! -f /replication_set.1 ]; then
84+
RAND="$(date +%s | rev | cut -c 1-2)$(echo ${RANDOM})"
85+
echo "=> Writting configuration file '${CONF_FILE}' with server-id=${RAND}"
86+
sed -i "s/^#server-id.*/server-id = ${RAND}/" ${CONF_FILE}
87+
sed -i "s/^#log-bin.*/log-bin = mysql-bin/" ${CONF_FILE}
88+
touch /replication_set.1
89+
else
90+
echo "=> MySQL replication master already configured, skip"
91+
fi
92+
fi
93+
94+
# Set MySQL REPLICATION - SLAVE
95+
if [ -n "${REPLICATION_SLAVE}" ]; then
96+
echo "=> Configuring MySQL replication as slave (1/2) ..."
97+
if [ -n "${MYSQL_PORT_3306_TCP_ADDR}" ] && [ -n "${MYSQL_PORT_3306_TCP_PORT}" ]; then
98+
if [ ! -f /replication_set.1 ]; then
99+
RAND="$(date +%s | rev | cut -c 1-2)$(echo ${RANDOM})"
100+
echo "=> Writting configuration file '${CONF_FILE}' with server-id=${RAND}"
101+
sed -i "s/^#server-id.*/server-id = ${RAND}/" ${CONF_FILE}
102+
sed -i "s/^#log-bin.*/log-bin = mysql-bin/" ${CONF_FILE}
103+
touch /replication_set.1
104+
else
105+
echo "=> MySQL replicaiton slave already configured, skip"
106+
fi
107+
else
108+
echo "=> Cannot configure slave, please link it to another MySQL container with alias as 'mysql'"
109+
exit 1
110+
fi
111+
fi
112+
89113
# Initialize empty data volume and create MySQL user
90114
if [[ ! -d $VOLUME_HOME/mysql ]]; then
91115
echo "=> An empty or uninitialized MySQL volume is detected in $VOLUME_HOME"
@@ -96,11 +120,15 @@ if [[ ! -d $VOLUME_HOME/mysql ]]; then
96120
mysql_install_db > /dev/null 2>&1
97121
echo "=> Done!"
98122
echo "=> Creating admin user ..."
123+
StartMySQL
99124
CreateMySQLUser
100125
else
101126
echo "=> Using an existing volume of MySQL"
127+
StartMySQL
102128
fi
103129

130+
tail -F $LOG &
131+
104132
# Import Startup SQL
105133
if [ -n "${STARTUP_SQL}" ]; then
106134
if [ ! -f /sql_imported ]; then
@@ -110,44 +138,31 @@ if [ -n "${STARTUP_SQL}" ]; then
110138
fi
111139
fi
112140

113-
114141
# Set MySQL REPLICATION - MASTER
115-
if [ -n "${REPLICATION_MASTER}" ]; then
116-
echo "=> Configuring MySQL replication as master ..."
117-
if [ ! -f /replication_configured ]; then
118-
RAND="$(date +%s | rev | cut -c 1-2)$(echo ${RANDOM})"
119-
echo "=> Writting configuration file '${CONF_FILE}' with server-id=${RAND}"
120-
sed -i "s/^#server-id.*/server-id = ${RAND}/" ${CONF_FILE}
121-
sed -i "s/^#log-bin.*/log-bin = mysql-bin/" ${CONF_FILE}
122-
echo "=> Starting MySQL ..."
123-
StartMySQL
142+
if [ -n "${REPLICATION_MASTER}" ]; then
143+
echo "=> Configuring MySQL replication as master (2/2) ..."
144+
if [ ! -f /replication_set.2 ]; then
124145
echo "=> Creating a log user ${REPLICATION_USER}:${REPLICATION_PASS}"
125146
mysql -uroot -e "CREATE USER '${REPLICATION_USER}'@'%' IDENTIFIED BY '${REPLICATION_PASS}'"
126147
mysql -uroot -e "GRANT REPLICATION SLAVE ON *.* TO '${REPLICATION_USER}'@'%'"
148+
mysql -uroot -e "reset master"
127149
echo "=> Done!"
128-
mysqladmin -uroot shutdown
129-
touch /replication_configured
150+
touch /replication_set.2
130151
else
131152
echo "=> MySQL replication master already configured, skip"
132153
fi
133154
fi
134155

135156
# Set MySQL REPLICATION - SLAVE
136-
if [ -n "${REPLICATION_SLAVE}" ]; then
137-
echo "=> Configuring MySQL replication as slave ..."
157+
if [ -n "${REPLICATION_SLAVE}" ]; then
158+
echo "=> Configuring MySQL replication as slave (2/2) ..."
138159
if [ -n "${MYSQL_PORT_3306_TCP_ADDR}" ] && [ -n "${MYSQL_PORT_3306_TCP_PORT}" ]; then
139-
if [ ! -f /replication_configured ]; then
140-
RAND="$(date +%s | rev | cut -c 1-2)$(echo ${RANDOM})"
141-
echo "=> Writting configuration file '${CONF_FILE}' with server-id=${RAND}"
142-
sed -i "s/^#server-id.*/server-id = ${RAND}/" ${CONF_FILE}
143-
sed -i "s/^#log-bin.*/log-bin = mysql-bin/" ${CONF_FILE}
144-
echo "=> Starting MySQL ..."
145-
StartMySQL
160+
if [ ! -f /replication_set.2 ]; then
146161
echo "=> Setting master connection info on slave"
147162
mysql -uroot -e "CHANGE MASTER TO MASTER_HOST='${MYSQL_PORT_3306_TCP_ADDR}',MASTER_USER='${MYSQL_ENV_REPLICATION_USER}',MASTER_PASSWORD='${MYSQL_ENV_REPLICATION_PASS}',MASTER_PORT=${MYSQL_PORT_3306_TCP_PORT}, MASTER_CONNECT_RETRY=30"
163+
mysql -uroot -e "start slave"
148164
echo "=> Done!"
149-
mysqladmin -uroot shutdown
150-
touch /replication_configured
165+
touch /replication_set.2
151166
else
152167
echo "=> MySQL replicaiton slave already configured, skip"
153168
fi
@@ -157,5 +172,4 @@ if [ -n "${REPLICATION_SLAVE}" ]; then
157172
fi
158173
fi
159174

160-
tail -F $LOG &
161-
exec mysqld_safe
175+
fg %1

5.6/Dockerfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ ENV REPLICATION_SLAVE **False**
3333
ENV REPLICATION_USER replica
3434
ENV REPLICATION_PASS replica
3535

36+
# ON_CREATE_SCRIPT
37+
ENV ON_CREATE_DB **False**
38+
3639
# Add VOLUMEs to allow backup of config and databases
3740
VOLUME ["/etc/mysql", "/var/lib/mysql"]
3841

0 commit comments

Comments
 (0)