2017-04-17 140 views
0

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

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

编辑1:

我的具体使用情况我正在运行的RabbitMQ服务器作为一个服务,我想创建一个新的用户,让他的管理员,并删除默认的guest用户一旦服务启动一个容器。我可以通过登录Docker容器手动完成,但我想通过将它们附加到启动rabbitmq服务的shell脚本来实现自动化,但这不起作用。

任何帮助表示赞赏!

Regards

+0

如果你想运行一个数据库服务器,我建议你将它作为一个单独的容器来运行。 – n00dl3

+0

如果你想沿第一个进程运行另一个进程,那么'&'应该工作。我曾经写过一个在mysql日志中使用'cat'和'grep'的脚本,一旦我需要一个快速和肮脏的解决方案,就会寻找“已成功启动”。 – n00dl3

+0

您尝试过“运行”吗? –

回答

0

具体围绕你的问题与兔子MQ - 你可以创建一个rabbitmq.config文件,并在创建码头图像时复制该文件。

在该文件中,你可以指定一个default_userdefault_pass当数据库从头开始设置看https://www.rabbitmq.com/configure.html

,作为一般性的问题将被创建 - 你可以在进入点更改为运行脚本无论你需要什么,你想要的服务,而不是服务的运行脚本

+0

的问题,谢谢!我认为这是一个好主意,我会为Rabbit MQ实施。 –

0

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

如果您在dockerfile中有CMD命令,那么它将被您在执行过程中指定的命令覆盖。所以,我认为除非在dockerfile中没有CMD,否则我不认为您有任何其他选项可以运行该脚本。

相关问题