当 Docker 和 MySQL 准备就绪时运行初始化脚本

当 Docker 和 MySQL 准备就绪时运行初始化脚本

我正在尝试运行一个脚本来初始化 Docker 容器中的 MySQL。我只想运行一次,因为它会为 MySQL 创建默认用户。

/root/mysql-init.sh:

#!/bin/bash

mysql -u root < /root/mysql-user-setup.sql

/root/mysql-用户-setup.sql:

USE mysql;
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON *.* TO 'username'@'localhost';
FLUSH PRIVILEGES;

我尝试以 Docker 形式运行该脚本ENTRYPOINT,但失败了。其中的 Docker 命令dockerfile

ENTRYPOINT ["/root/mysql-init.sh"]

启动Docker容器时出错:

2020-05-21T00:51:36.741895785Z ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

因此,我假设我尝试在 MySQL 服务尚未启动时执行该脚本。因此,脚本失败。因此我有两个可能的解决方案:

  1. 从脚本内部反复检查 MySQL 服务是否存在。
  2. 以与 不同的方式启动脚本ENTRYPOINT

这是正确的做法吗?

相关内容