是否可以从 docker 外部将确定的 $MYSQL_ROOT_PASS 传递给 MySQL docker?如果是这样怎么办?

Is it possible to pass a determined $MYSQL_ROOT_PASS to MySQL docker from outside docker? If so how?

所以我正在编写一个安装脚本,因为我无法在 armfh 上找到可靠的 MySQL 替代品(数据库必须 MySQL 兼容),我正在使用一个社区可以正常工作,但是它没有按应有的方式启动数据库。它要求我传递以下参数。

mysql -h"db" -u"root" -p"$MYSQL_ROOT_PASSWORD" "$MYSQL_DATABASE" < /docker-entrypoint-initdb.d/1_db.sql

从里面docker。问题是我希望它作为一个流畅的安装脚本自然地流动。我尝试使用以下命令传递文档并获得密码提示:

docker exec -it db bash -c "mysql -h"db" -u"root" -p"$MYSQL_ROOT_PASSWORD" "$MYSQL_DATABASE" < /docker-entrypoint-initdb.d/1_db.sql"

如果也试过:

docker exec -it db bash -c "mysql -h'db' -u'root' -p'$MYSQL_ROOT_PASSWORD' '$MYSQL_DATABASE' < /docker-entrypoint-initdb.d/1_db.sql

FwIW: 我用MYSQL_ROOT_PASSWORD=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 64 | head -n 1)定义了密码。如果我手动输入 docker 发送命令 1(在引号中),数据库将启动。

总结一下我的问题:是否可以通过上面的命令从 docker 外部激活 1_db.sql 文件?

任何帮助都会很棒!提前致谢!

Is it possible to pass a command like the above to activate the 1_db.sql file from outside docker?

你可以试试

cat 1_db.sql  | docker exec -i test bash -c 'mysql  -uroot -p$MYSQL_ROOT_PASSWORD $MYSQL_DATABASE'

另外,请记住,当您尝试 exec bash -c "mysql -uroot -p$MYSQL_ROOT_PASSWORD" 时,它会在主机中而不是在容器中为 MYSQL_ROOT_PASSWORD 使用单引号。

determined $MYSQL_ROOT_PASS to MySQL docker from outside docker? If so how?

docker exec -i test bash -c 'echo mysql docker password is $MYSQL_ROOT_PASSWORD'