【发布时间】:2017-05-01 09:55:26
【问题描述】:
我正在尝试使用 Docker 创建一个 mysql 映像,但它无法正常工作...
我的目标是从 Ubuntu Trusty 创建一个自定义的 MYSQL 映像。图像应该执行典型的脚本来根据通过命令行传递的变量来配置数据库,但是当我运行 'docker run -d -e MYSQL_ROOT=docker -e MYSQL_DATABASE=wp ... '脚本工作正常,但完成后,容器停止。
我尝试了 'nohup /usr/sbin/mysqld &' , exec '/usr/sbin/mysqld &' 但没有,守护进程死了。
我的 dockerfile 如下:
FROM ubuntu:trusty
ENV DEBIAN_FRONTEND noninteractive
RUN \
apt-get update && \
apt-get -y install mysql-server-5.6 supervisor --no-install-recommends && \
apt-get -y clean && \
apt-get -y autoclean && \
rm -rf /var/lib/apt/lists/*
RUN \
ln -sf /dev/stderr /var/log/mysql/error.log && \
sed -i 's/127.0.0.1/0.0.0.0/' /etc/mysql/my.cnf
COPY config.sh /
VOLUME ["/var/lib/mysql"]
EXPOSE 3306
ENTRYPOINT ["/config.sh"]
还有脚本“config.sh”:
#!/bin/bash -x
/usr/sbin/mysqld &
sleep 5
if [ $MYSQL_ROOT_PASSWORD ]
then
mysql -u root -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('${MYSQL_ROOT_PASSWORD}') ;"
else
echo 'Error al establecer la contraseña de root.'
exit 1
fi
if [ $MYSQL_DATABASE ]
then
mysql -u root -p${MYSQL_ROOT_PASSWORD} -e "CREATE DATABASE IF NOT EXISTS ${MYSQL_DATABASE} ;"
else
echo 'Error al crear la base de datos.'
fi
if [ $MYSQL_USER ] && [ $MYSQL_PASSWORD ]
then
mysql -u root -p${MYSQL_ROOT_PASSWORD} -e "GRANT ALL ON ${MYSQL_DATABASE}.* TO '${MYSQL_USER}'@'%' IDENTIFIED BY '${MYSQL_PASSWORD}' ; FLUSH PRIVILEGES ;"
elif [ $MYSQL_USER ]
then
mysql -u root -p${MYSQL_ROOT_PASSWORD} -e "GRANT ALL ON ${MYSQL_DATABASE}.* TO '${MYSQL_USER}'@'%' IDENTIFIED BY '${MYSQL_USER}' ; FLUSH PRIVILEGES ;"
else
echo 'No se pudo crear el usuario.'
fi
【问题讨论】:
标签: mysql database bash docker containers