#!/bin/bash
# author: acdiost
set -e
if [ "$1" = 'mysqlrouter' ]; then
if [[ -z $MASTER_HOST || -z $SLAVE_HOST ]]; then
echo "We require all of"
echo " MASTER_HOST"
echo " SLAVE_HOST"
echo "run command: docker run -dit -e MASTER_HOST='1.2.3.4:3306' -e SLAVE_HOST='2.2.3.4:3306,3.2.3.4:3306' -p 6446:6446 -p 6447:6447 mysql-router"
echo "configuration: /etc/mysqlrouter/mysqlrouter.conf"
echo "to be set. Exiting."
exit 1
fi
CONFIGFILE=/etc/mysqlrouter/mysqlrouter.conf
# 主从模式
cat >"$CONFIGFILE" <<EOF
[DEFAULT]
logging_folder = /var/log/mysqlrouter
runtime_folder = /var/run/mysqlrouter
config_folder = /etc/mysqlrouter
[logger]
level = INFO
[routing:masters]
bind_address = 0.0.0.0
bind_port = 6446
destinations = $MASTER_HOST
mode = read-write
[routing:slaves]
bind_address = 0.0.0.0
bind_port = 6447
destinations = $SLAVE_HOST
mode = read-only
EOF
## 简单模式
# cat >"$CONFIGFILE" <<EOF
# [DEFAULT]
# logging_folder = /var/log/mysqlrouter
# runtime_folder = /var/run/mysqlrouter
# config_folder = /etc/mysqlrouter
# [logger]
# level = INFO
# [routing:basic_failover]
# bind_address = 0.0.0.0
# bind_port = 6446
# mode = read-write
# destinations = $MASTER_HOST
# EOF
exec "$@" --config $CONFIGFILE
fi
exec "$@"
FROM mysql/mysql-router
COPY run.sh /run.sh
HEALTHCHECK \
CMD mysqladmin --port 6446 --protocol TCP ping 2>&1 | grep Access || exit 1
EXPOSE 6446 6447 64460 64470
ENTRYPOINT ["/run.sh"]
CMD ["mysqlrouter"]