我有一个 bash脚本来启动各种docker-compose.yml(s)
其中一个组合实例是docker-compose.password.yml,用于为mysql创建密码文件。为此,我需要提示用户输入用户名,然后在docker中运行服务(实际上没有运行)。
基本上我能想到的唯一方法是在空闲状态下运行docker,执行命令并关闭docker。还有更好的方法吗?
(更容易直接使用docker run,但是我必须检查图像是否已经可用并且在各种docker-compose.ymls中加上图像定义,现在也在bash脚本中)
XXXXXXXXXX 我的解决方案:
搬运工-compose.password.yml
version: '2'
services:
createpw:
command:
top -b -d 3600
然后
docker-compose -f docker-compose.password.yml up -d
通过我的bash脚本在docker之外提示用户输入凭据
read -p "Input user name.echo $’\n> ’" username
并将其发送到正在运行的docker
docker exec createpw /bin/bash -c "mysql_config_editor set --user=${username} --password"
然后docker-compose down
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
尝试过但没有工作: 我试着在命令
下只提供一个小的下标提示输入command:
/bin/bash /somewhere/createpassword.sh
这确实产生了文件,但是用户是一个空字符串,因为提示没有停止docker执行。如果我使用compose -d也无关紧要。
欢迎任何建议。感谢。