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

m1w*_*ell 0 mysql sql docker

我用mysql启动了一个docker容器.
实际上我想创建一个新用户和一个新表 - 我必须在MySQL Workbench中完成.

这是我的docker run命令:
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启动脚本(仅用于容器的第一次启动),它创建了我的用户和我的表?
我必须做哪些步骤?

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

ada*_*187 5

你需要通过创建用户MYSQL_USER,MYSQL_PASSWORDENV VAR和使用量/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
Run Code Online (Sandbox Code Playgroud)

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

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

初始化新实例
第一次启动容器时,将创建具有指定名称的新数据库,并使用提供的配置变量进行初始化.此外,它将执行具有扩展名的文件.sh,.sql并且.sql.gz可以在其中找到/docker-entrypoint-initdb.d.文件将按字母顺序执行.您可以通过将SQL转储装入该目录并使用提供的数据提供自定义映像来轻松填充您的mysql服务.默认情况下,SQL文件将导入到MYSQL_DATABASE变量指定的数据库中.

  • @ m1well,您可以在此处确切了解如何创建用户:https://github.com/docker-library/mysql/blob/0590e4efd2b31ec794383f084d419dea9bc752c4/5.7/docker-entrypoint.sh#L166-L174 (2认同)