我有一个应用程序和一个数据库容器。我用Docker Compose把它们搞砸了。应用程序容器需要等到db容器启动,然后执行架构初始化SQL。我需要在执行wait-for-db
脚本后执行此操作,因此应在应用程序容器的CMD
中执行。问题是db容器不包含ssh。如何运行像
sqlplus system/oracle @schema.sql
从app容器对数据库容器?
非常感谢!
更新:也许,在Oracle 12c中有一种通过HTTP执行SQL的方法吗?
答案 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的脚本。