編譯MySQL容器化

背景:docker-k8s逐漸火熱、以下記錄編譯的mysql容器化、後面會發出k8s編排寫法
此文章全爲學習、生產建議使用官方chart部署。

1、dockerfile部分

FROM registry.det.baidu.com/library/baidu/base-centos:0.1.1
WORKDIR /home/sock/mysql/
RUN groupadd mysql && useradd  -g mysql mysql
ADD mysql-5.7.21.tar.gz /home/sock
ADD entrypoint.sh /
ENV NEW_PASSWORD Baidu@1234.
EXPOSE 3306
#ENTRYPOINT [ "entrypoint.sh" ]
CMD  [ "/entrypoint.sh" ]

2、entrypoint.sh部分

#!/bin/bash
sock(){
        init
        sleep 5
        pass
        start
        sleep 5
        user
}
DIRECTORY=/home/sock/mysql/data
dir=/home/sock
sock=/home/sock/mysql/tmp/mysql.sock
#NEW_PASSWORD=Baidu@1234.

########init-passwd#######
pass(){
echo $(tail -1 /home/mysql_passwd.txt |awk -F " " '{print $NF}')  > /home/mysql_passwd.txt
}

########init-sock#########
init(){
if [ "`ls -A $DIRECTORY`" = "" ]; then
echo "$DIRECTORY is indeed empty"
$dir/mysql/bin/mysqld --initialize --user=mysql --basedir=/$dir/mysql --datadir=$dir/mysql/data/ &> /home/mysql_passwd.txt
else
echo "$DIRECTORY is not empty"
fi
}
########init-user#########
user(){
mima=$(cat /home/mysql_passwd.txt)
auth=`$dir/mysql/bin/mysql  -uroot -p$NEW_PASSWORD -P 3306 -S $sock  -e "SELECT * FROM mysql.user WHERE user='root'\G"|grep Host|grep %|wc -l`
if [ $auth -eq 1 ]; then
echo "-uroot -p$NEW_PASSWORD % "
tail -f $dir/mysql/log/mysql.log
else
$dir/mysql/bin/mysql --connect-expired-password -uroot -p${mima} -e  "alter user 'root'@'localhost' identified by '$NEW_PASSWORD';" -S $sock
$dir/mysql/bin/mysql -uroot -p$NEW_PASSWORD -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '$NEW_PASSWORD' WITH GRANT OPTION;" -S  $sock
tail -f $dir/mysql/log/mysql.log
fi
}
start(){
#######sock#####
counter=$(ps -C mysqld --no-heading|wc -l)
if [  "${counter}" = "0" ]; then
$dir/mysql/bin/mysqld_safe --defaults-file=$dir/mysql/etc/my.cnf --user=mysql &

else
echo mysql-up 
fi 
}

sock
exec "$@"

3、run起mysql服務
NEW_PASSWORD=“Pwd@1234.” ##root密碼

docker run  -itd  -e NEW_PASSWORD="Pwd@1234."  -p 8496:3306  --name mysql-5.7.21 registry.det.baidu.com/library/mysql:5.7.21

4、驗證

mysql -uroot -pPwd@1234. -h10.61.187.40 -P 8496
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章