我要做的是建立一个本地开发数据库,以防止每个人都要经历所有我认为创建脚本有用的步骤。
一旦在终端中,我下面的内容就会停止:
输出
./dbSetup.sh
hash of container 0d1b182aa6f1
/ #
这时我必须手动输入exit
。
脚本
#!/bin/bash
command=$(docker ps | grep personal)
set $command
echo "hash of container ${1}"
docker exec -it ${1} sh
有没有办法通过脚本将命令注入dockers容器终端?
答案 0 :(得分:0)
为了在容器内执行命令,您可以使用如下代码:
save(account, em)
更多信息,请访问:https://docs.docker.com/engine/reference/commandline/exec/
答案 1 :(得分:0)
您的脚本找到一个正在运行的Docker容器并为其打开一个外壳。 “ -it”使其具有交互性并分配一个tty,这就是为什么它继续等待输入的原因,例如“出口”。如果计划执行一些命令来初始化本地开发数据库,则建议改用Dockerfile构建映像。即,一旦您确定要运行的命令,它们将成为RUN命令,并且在docker run之后的容器将公开本地开发数据库。
如果您确实希望启动外壳后在外壳中运行某些命令并维护会话,具体取决于基本映像,则可以挂载具有所需命令的bash配置文件,例如-v db_profile:/etc/profile.d,其中db_profile是包含要运行的Shell脚本的文件夹。要使它们运行,您需要执行sh -l以运行登录启动脚本。