构建mysql的image的Dockerfile如下:
FROM ubuntu
RUN dpkg-divert --local --rename --add /sbin/initctl
RUN ln -nfs /bin/true /sbin/initctl
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" >> /etc/apt/sources.list
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get -y install mysql-client mysql-server
RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
ADD ./startup.sh /opt/startup.sh
EXPOSE 3306
CMD ["/bin/bash", "/opt/startup.sh"]
可以看出,该image是在ubuntu的基础上,下载mysql-server和mysql-client,并将mysql的绑定地址由127.0.0.1改为0.0.0.0,即由本机IP改为所有IP。此外,通过“EXPOSE 3306”来开放内部的3306端口供container外部使用,并设置启动脚本为startup.sh。
#!/bin/bash
if [ ! -f /var/lib/mysql/ibdata1 ]; then
mysql_install_db
mysqld &
sleep 10s
echo "GRANT ALL ON *.* TO root