【发布时间】:2021-07-06 20:13:39
【问题描述】:
我有两个要在 docker-compose 下运行的应用程序/服务。 (AppA 和 AppB)
我希望在运行 docker-compose up 时启动 AppA,但不启动 AppB。并且在满足各种条件后,我想让AppA(它是docker容器中的一个Go应用)启动AppB的docker容器。
我的 docker-compose.yml 文件定义了这两个服务,如果使用以下命令启动:
docker-compose up
AppA 和 AppB 都开始运行。 (所以我相信我的 docker-compose.yml 配置正确) 如果我只想运行 AppA(我确实想要!)我运行这个命令:
docker-compose up AppA
只有 AppA 会启动。 (到目前为止一切都很好。)
当我要启动 AppB 时,我让 AppA 从 golang 代码中调用以下代码:
cmd := exec.Command("docker run AppB")
或
cmd := exec.Command("docker-compose start AppB")
这两个都会产生错误:
Error: fork/exec docker run AppB: no such file or directory.
关于如何在另一个 docker 容器中从 Go 应用启动 docker 容器有什么想法吗?
【问题讨论】:
-
This 或许能帮到你。
-
在容器内部,您需要
docker-compose.yml文件的副本,您需要docker-compose工具本身的副本,并且您需要对整个主机具有不受限制的root 等效管理权限。让两个容器一直运行似乎更简单、更安全。 -
我实际上需要多个 AppB 副本,并且还需要其他应用程序。我认为让它们始终运行并不是一个可行的解决方案。我需要能够启动将运行一段时间的应用程序,然后它们会在完成后退出。如果它像两个应用程序一样简单,我认为你是对的。我只是简化以帮助定义问题。
标签: docker go docker-compose