#!/bin/bash# author: acdiostset -eif [ "$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 fiCONFIGFILE=/etc/mysqlrouter/mysqlrouter.conf# 主从模式 cat >"$CONFIGFILE" <<EOF[DEFAULT]logging_folder = /var/log/mysqlrouterruntime_folder = /var/run/mysqlrouterconfig_folder = /etc/mysqlrouter[logger]level = INFO[routing:masters]bind_address = 0.0.0.0bind_port = 6446destinations = $MASTER_HOSTmode = read-write[routing:slaves]bind_address = 0.0.0.0bind_port = 6447destinations = $SLAVE_HOSTmode = read-onlyEOF## 简单模式# 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 $CONFIGFILEfiexec "$@"
FROM mysql/mysql-routerCOPY run.sh /run.shHEALTHCHECK \ CMD mysqladmin --port 6446 --protocol TCP ping 2>&1 | grep Access || exit 1EXPOSE 6446 6447 64460 64470ENTRYPOINT ["/run.sh"]CMD ["mysqlrouter"]