如何从另一个Docker容器中运行命令?

时间:2018-05-21 12:01:28

标签: oracle docker docker-compose dockerfile oracle12c

我有一个应用程序和一个数据库容器。我用Docker Compose把它们搞砸了。应用程序容器需​​要等到db容器启动,然后执行架构初始化SQL。我需要在执行wait-for-db脚本后执行此操作,因此应在应用程序容器的CMD中执行。问题是db容器不包含ssh。如何运行像

这样的特定命令
sqlplus system/oracle @schema.sql

从app容器对数据库容器?

非常感谢!

更新:也许,在Oracle 12c中有一种通过HTTP执行SQL的方法吗?

1 个答案:

答案 0 :(得分:1)

您的数据库容器不应该需要ssh。应用程序容器上的wait-for-it脚本可以在继续之前测试db容器上oracle侦听器端口1521的可用性。

E.g。在您的应用程序容器的docker-compose条目中,假设“db”是数据库容器的名称:

command: "./wait-for-it.sh db:1521 runsql.sh"

其中runsql.sh是一个获取必要的oracle环境变量并运行sqlplus的脚本。