Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用dockerfile在mysql中创建默认数据库_Mysql_Docker - Fatal编程技术网

使用dockerfile在mysql中创建默认数据库

使用dockerfile在mysql中创建默认数据库,mysql,docker,Mysql,Docker,我正在使用这个docker文件,为了启动并运行一个安装了mysql的docker映像,docker文件创建了一个名为root、没有密码的用户,我需要在docker文件中添加如下内容: RUN mysql -uroot -p"" && mysql create database test; 因此,当我从docker文件构建图像时,数据库应该已经存在 通过执行以下操作,我能够实现向tutum docker mysql映像添加数据库的目标 git clone https://gi

我正在使用这个docker文件,为了启动并运行一个安装了mysql的docker映像,docker文件创建了一个名为root、没有密码的用户,我需要在docker文件中添加如下内容:

RUN mysql -uroot -p""  &&  mysql create database test;

因此,当我从docker文件构建图像时,数据库应该已经存在

通过执行以下操作,我能够实现向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命令中获得的值。在该命令运行之后,我可以发出一个“showdatabases”命令,其结果如下

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

mysql> 

通过修改Dockerfile,我尝试了一段时间。我认为这是可能的,但过了一会儿,我发现上面的解决方案更快、更简单。

您可以在容器启动时传递\u CREATE\u DB env参数。 来自


docker run-d-p 3306:3306-e ON_CREATE_DB=“newdatabase”tututum/mysql

当您尝试此操作时会发生什么?我尝试了一些命令,但出现了不同的错误,我尝试了mysql-uroot“创建数据库测试”,错误是:错误2002(HY000):无法通过套接字“/var/run/mysqld/mysqld/mysqld.sock”连接到本地mysql服务器(2)还尝试了mysqld-uroot-p“”“创建数据库测试”,错误为:140710 10:12:28[警告]不推荐使用唯一选项前缀key\u buffer而不是key\u buffer\u size,并将在将来的版本中删除。请改用全名。我们也试过运行/usr/bin/mysqld_safe sleep 5&&mysql-uroot-e“create database test”;这与同一存储库中create_db文件中的查询类似,这次的错误是:140710 10:15:24 mysqld_safe无法同时登录到错误日志和系统日志。删除所有--syslog的--log错误配置选项以使其生效。Dockerfile的外观如何?