我正在尝试运行一个脚本来初始化 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 服务尚未启动时执行该脚本。因此,脚本失败。因此我有两个可能的解决方案:
- 从脚本内部反复检查 MySQL 服务是否存在。
- 以与 不同的方式启动脚本
ENTRYPOINT
。
这是正确的做法吗?