【发布时间】:2017-09-13 14:39:04
【问题描述】:
我为服务编写了一个 Dockerfile(我有一个指向启动进程的脚本的 CMD),但是在进程启动后我无法运行任何其他命令?我尝试使用“&”在后台运行该进程,以便在该进程启动后运行其他命令但它不起作用?关于如何实现这一点的任何想法?
例如,假设我启动了一个数据库服务器,并且想在数据库进程启动后才运行一些脚本,我该怎么做?
编辑 1:
我的具体用例是我将 Rabbitmq 服务器作为服务运行,我想创建一个新用户,让他成为管理员,并在服务在容器中启动后删除默认的来宾用户。我可以通过登录到 docker 容器手动执行此操作,但我想通过将这些附加到启动 rabbitmq 服务的 shell 脚本来自动化它,但这不起作用。
感谢任何帮助!
问候
【问题讨论】:
-
如果你想运行一个数据库服务器,我建议你将它作为一个单独的容器运行。
-
如果你想沿着第一个进程运行另一个进程,
&应该可以工作。我曾经编写一个脚本,在 mysql 日志上使用cat和grep,一旦我需要一个快速而肮脏的解决方案,就会寻找“成功启动”。 -
你试过
RUN吗? -
我并不是特指数据库服务器,而是举个例子。 RUN 可用于在创建 docker 映像时运行,但我希望我的命令仅在容器和服务启动后运行,因为我的命令需要服务启动并运行。我知道的一种方法是使用 & 并将其作为 shell 脚本中的后台进程运行,但这不起作用,不知道为什么。还有其他方法吗?
-
更新了我在使用 Rabbitmq 时遇到的问题
标签: docker docker-compose dockerfile microservices consul