如何将启动脚本添加到mysql docker容器?

时间:2017-09-29 05:21:29

标签: mysql sql docker

我用mysql启动了一个docker容器 实际上我想创建一个新用户和一个新表 - 我必须在MySQL Workbench中创建它
这是我的码头运行命令:
docker run -p 3306:3306 --name mysql-server -v ~/Development/web/myproject/docker/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:latest

我的问题是:
我如何添加一个sql启动脚本(仅适用于容器的第一次启动),它创建了我的用户和我的表? 我需要做哪些步骤?

有人可以帮助我吗? 非常感谢!

1 个答案:

答案 0 :(得分:5)

您需要通过MYSQL_USERMYSQL_PASSWORD env vars创建用户,并使用卷/docker-entrypoint-initdb.d将目录与您的启动脚本(.sh.sql映射, .sql.gz

docker run -p 3306:3306 --name mysql-server \ 
 -v ~/Development/web/myproject/docker/mysql:/var/lib/mysql \
 -v ~/Development/web/myproject/docker/yourstartupscripts:/docker-entrypoint-initdb.d \
 -e MYSQL_ROOT_PASSWORD=root \
 -e MYSQL_USER=youruser \
 -e MYSQL_PASSWORD=youruserpassword \
 -d mysql:latest

来自https://hub.docker.com/_/mysql/

的解释

MYSQL_USER,MYSQL_PASSWORD
这些变量是可选的,可以结合使用来创建新用户并设置该用户的密码。此用户将被授予MYSQL_DATABASE变量指定的数据库的超级用户权限(参见上文)。这两个变量都是创建用户所必需的。

初始化新实例
首次启动容器时,将创建具有指定名称的新数据库,并使用提供的配置变量进行初始化。此外,它还会执行在.sh中找到的扩展名为.sql.sql.gz/docker-entrypoint-initdb.d的文件。文件将按字母顺序执行。您可以通过mounting a SQL dump into that directory轻松填充mysql服务,并提供custom images提供的数据。默认情况下,SQL文件将导入MYSQL_DATABASE变量指定的数据库。