如何在进程启动后执行docker命令

我写了一个服务的Dockerfile(我有一个CMD指向启动进程的脚本),但是在进程启动后我不能运行任何其他命令? 我尝试使用'&'在后台运行进程,以便其他命令在进程启动后运行,但不工作? 任何想法如何实现这一目标?

例如,考虑我启动了一个数据库服务器,并希望在数据库进程启动后才运行一些脚本,我该怎么做?

编辑1:

我的具体用例是我运行一个Rabbitmq服务器作为服务,我想创build一个新的用户,让他的pipe理员,并删除默认来宾用户一旦服务在容器中启动。 我可以通过logindocker容器手动完成,但我想通过将它们附加到启动rabbitmq服务的shell脚本来实现自动化,但是这不起作用。

任何帮助表示赞赏!

问候

具体围绕你的问题与兔子MQ – 你可以创build一个rabbitmq.config文件,并在创build泊坞窗图像时复制。

在该文件中,您可以指定从头开始设置数据库时将创build的default_userdefault_pass请参阅https://www.rabbitmq.com/configure.html

就一般问题而言 – 您可以将入口点更改为脚本,该脚本可以运行您所需的任何服务,而不是您想要的服务的运行脚本

我部分理解你的问题。 根据我从你的问题中所看到的,我build议你提一下复制命令,将要运行的脚本复制到dockerfile中。 构build映像并运行容器后,启动数据库服务。 然后执行容器并进入容器,手动运行脚本。

如果在dockerfile中有CMD命令,那么它将被执行期间指定的命令覆盖。 所以,我不认为你有任何其他选项来运行脚本,除非你在dockerfile中没有CMD。