我正在使用这个tutum-docker-mysql docker文件,为了启动和运行安装了mysql的docker镜像,docker文件创建了一个名为root且没有密码的用户,我需要的是向docker文件中添加类似以下内容:
RUN mysql -uroot -p"" && mysql create database test;因此,当我从docker文件构建一个镜像时,数据库应该已经在那里了。
发布于 2014-08-15 13:58:09
通过执行以下操作,我能够完成向tutum docker-mysql映像添加数据库的目标。
git clone https://github.com/tutumcloud/tutum-docker-mysql.git
cd tutum-docker-mysql
vi create_mysql_admin_user.sh在.sh文件中,我添加了一行,就在已经存在的两个"mysql -uroot“行的正下方。我只是简单地补充了一下:
mysql -uroot -e "create database test;"在对该.sh文件进行更改之后,我只是构建了docker映像。
docker build -t tutum/mysql .在构建docker镜像之后,我可以使用如下命令运行它:
docker run -d -p 3307:3306 tutum/mysql一旦容器开始运行,您需要知道要使用的密码和容器的ip地址。要获得密码,您只需执行以下操作
docker logs 2976a81f1a9b19787d9bde893c831b7e6586d7c8391ccd222ad29b02c282d896当然也要使用容器id,这是从上面的"docker run“命令返回的。现在您有了密码,您需要ip地址。我是通过这样做才能做到的。
docker inspect 2976a81f1a9b19787d9bde893c831b7e6586d7c8391ccd222ad29b02c282d896看着“网关”地址。有了密码和ip地址,我就可以从容器外部执行此mysql命令。
mysql -uadmin -pJcM5FCphMOp4 -h172.17.42.1 -P3307其中,ip地址和密码是我从前两个docker命令中获得的值。在运行该命令之后,我可以发出一个带有以下结果的"show databases“命令。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql> 我通过修改Dockerfile进行了一段时间的尝试。我认为这可能是可能的,但过了一段时间,我发现上面的解决方案要快得多,也更简单。
发布于 2016-08-06 13:06:54
容器启动时可以传入ON_CREATE_DB环境参数。来自tutum README.md的示例
docker run -d -p 3306:3306 -e ON_CREATE_DB="newdatabase" tutum/mysql
https://stackoverflow.com/questions/24673357
复制相似问题