当前位置: 首页 > 面试题库 >

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

凌照
2023-03-14
问题内容

我用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启动脚本(仅用于容器的首次启动)?
我必须执行哪些步骤?

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


问题答案:

你需要通过创建用户MYSQL_USERMYSQL_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

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

MYSQL_USER,MYSQL_PASSWORD
这些变量是可选的,与创建新用户和设置该用户的密码一起使用。该MYSQL_DATABASE变量将为该用户授予超级用户权限(请参见上文)。这两个变量都是创建用户所必需的。

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



 类似资料:
  • 我很喜欢这个从http://www.jqueryscript.net/time-clock/modern-circular-jquery-countdown-timer-plugin-final-countdown.html下载的倒计时脚本,想把它用到我的wordpress网站上,我读了一些关于如何在wordpress中放入任何脚本的教程,但是我不能完全理解,因为我是新手,你能帮我一步一步地做吗

  • 我有一个Sinatra应用程序,在Docker中运行良好: 但是当我尝试添加Redis时: Redis似乎没有启动。 那么,将Redis添加到Ruby()Docker容器中的好方法是什么呢?

  • 问题内容: 我正在使用Search Guard插件来保护由多个节点组成的elasticsearch集群。这是我的Dockerfile: 初始化SearchGuard(创建内部用户并分配角色)。容器启动后,我需要运行脚本。这是问题所在:除非运行Elasticsearch,否则脚本将不会初始化任何安全性索引。 脚本的内容是: 现在,我只是在容器启动后手动运行脚本,但是由于我是在Kubernetes上运

  • 问题内容: 我想在Linux PATH中添加一个小脚本,因此不必在实际放置在磁盘上的地方实际运行它。 该脚本非常简单,它是关于通过代理赋予apt-get访问权限的,我使它像这样: 然后,我将其保存为apt-proxy.sh,将其设置为+ x(chmod),当我位于该文件所在的目录中时,一切正常。 我的问题是:如何将此 apt-proxy 添加到 PATH, 以便实际上可以将其称为真正的apt-ge

  • 我想在linux路径中添加一个小脚本,这样我就不必在磁盘上实际运行它。 这个脚本非常简单,是关于通过代理提供apt-get访问权限的,我是这样做的: 然后我将其保存为apt代理。sh,将它设置为x(chmod),当我在这个文件所在的目录中时,一切都正常工作。 我的问题是:如何将这个apt-代理添加到PATH中,这样我就可以实际调用它,就好像它是真正的apt-get一样?[从任何地方] 寻找命令行唯

  • 问题内容: 我必须为支付网关使用两个外部脚本。现在,两者都放入文件中。但是,我不想在一开始就加载这些文件。仅在用户打开特定组件()时才需要支付网关。 反正有实现这个目标的方法吗? 问题答案: 解决此问题的一种简单有效的方法是将外部脚本添加到组件的Vue中。我将用GoogleRecaptcha脚本向您说明: