用docker启动oracle:“TNS:listener:所有适当的实例阻塞新的连接”错误

我使用docker启动一个oracle容器。 容器启动正常,数据库出现,当我尝试运行一个maven命令加载一些sql文件,但是,我得到以下错误:

[ERROR] Failed to execute goal org.liquibase:liquibase-maven-plugin:3.4.1:dropAll (default-cli) on project edacm-se: Error setting up or running Liquibase: liquibase.exception.DatabaseException: java.sql.SQLException: Listener refused the connection with the following error: [ERROR] ORA-12528, TNS:listener: all appropriate instances are blocking new connections 

但是,如果我有两个maven命令,一个首先丢掉,然后一个更新,第一个会失败,上面的消息,第二个将通过,所以这显然是一个等待oracle实例可用的问题。

接下来的问题是,如何才能知道Oracle泊坞窗容器实例中的TNS侦听器是否可用于远程请求? 这可以在一个shell脚本中完成吗?

我的oracle实例正在运行:

 f543a59dad62 oracle "/bin/sh -c '/usr/sbi" 22 minutes ago Up 22 minutes 8080/tcp, 0.0.0.0:49160->22/tcp, 0.0.0.0:49161->1521/tcp determined_khorana 

并且基于这个图象:

https://hub.docker.com/r/wnameless/oracle-xe-11g/

您可能需要在depends_on docker-compose.yml中添加一个depends_on指令 ,以便等待db完全可用。

请参阅docker-oracle-xe-11g问题20 ,它引用了“ 控制Compose中的启动顺序 ”