如何在dockerfile中设置mysql用户名

apt-get install mysql-server ubuntu中apt-get install mysql-server ,在安装过程中会询问mysql的用户名和密码。

但是,当使用dockerfile来build立一个mysql映像时,如何提供用户名和密码?

我尝试使用dockerfile如下:

 FROM ubuntu:14.04 apt-get update apt-get install -y mysql-server 

但是在构build映像时,我发现我们可以在没有用户名和密码的情况下在mysql中login。

当我使用dockerfile来构build我的图像时,如何设置用户名和密码?

如果你看看官方的Docker MySQL镜像Dockerfile ,你会发现他们是如何使用debconf-set-selections进行的 。

相关说明是:

 RUN { \ echo mysql-community-server mysql-community-server/data-dir select ''; \ echo mysql-community-server mysql-community-server/root-pass password ''; \ echo mysql-community-server mysql-community-server/re-root-pass password ''; \ echo mysql-community-server mysql-community-server/remove-test-db select false; \ } | debconf-set-selections \ && apt-get update && apt-get install -y mysql-server 

debconf-set-selections是一个工具,它允许你为在稍后的安装过程中被问到的问题准备答案。

tutumcloud / MySQL的

Dockerfile

 ADD run.sh /run.sh ENV MYSQL_USER=admin \ MYSQL_PASS=**Random** \ ON_CREATE_DB=**False** \ REPLICATION_MASTER=**False** \ REPLICATION_SLAVE=**False** \ REPLICATION_USER=replica \ REPLICATION_PASS=replica 

run.sh

 StartMySQL () { /usr/bin/mysqld_safe ${EXTRA_OPTS} > /dev/null 2>&1 & # Time out in 1 minute LOOP_LIMIT=60 for (( i=0 ; ; i++ )); do if [ ${i} -eq ${LOOP_LIMIT} ]; then echo "Time out. Error log is shown as below:" tail -n 100 ${LOG} exit 1 fi echo "=> Waiting for confirmation of MySQL service startup, trying ${i}/${LOOP_LIMIT} ..." sleep 1 mysql -uroot -e "status" > /dev/null 2>&1 && break done } CreateMySQLUser() { if [ "$MYSQL_PASS" = "**Random**" ]; then unset MYSQL_PASS fi PASS=${MYSQL_PASS:-$(pwgen -s 12 1)} _word=$( [ ${MYSQL_PASS} ] && echo "preset" || echo "random" ) echo "=> Creating MySQL user ${MYSQL_USER} with ${_word} password" mysql -uroot -e "CREATE USER '${MYSQL_USER}'@'%' IDENTIFIED BY '$PASS'" mysql -uroot -e "GRANT ALL PRIVILEGES ON *.* TO '${MYSQL_USER}'@'%' WITH GRANT OPTION" echo "=> Done!" echo "========================================================================" echo "You can now connect to this MySQL Server using:" echo "" echo " mysql -u$MYSQL_USER -p$PASS -h<host> -P<port>" echo "" echo "Please remember to change the above password as soon as possible!" echo "MySQL user 'root' has no password but only allows local connections" echo "========================================================================" } StartMySQL CreateMySQLUser 

…..对你有帮助