支持Docker的ASP.NET Core:拒绝连接

我有一个支持Docker的ASP .NET Core(v2.0)应用程序。 我想在启动我的应用程序时启动一个Oracle数据库。 这是我的docker-compose文件的样子:

version: '3' services: devarttestapp: image: devarttestapp build: context: ./DevartTestApp dockerfile: Dockerfile oracledb: image: sath89/oracle-12c ports: - "1521:1521" 

我使用Devart数据提供程序dotConnect for Oracle。

 var conn = new Devart.Data.Oracle.OracleConnection(); conn.ConnectionString = Environment.GetEnvironmentVariable("ORACLE_CONNECTION_STRING"); try { conn.Open(); } catch (Exception e) { Console.WriteLine(e); throw; } 

但是,当我尝试连接到创build的Oracle数据库容器的数据库时,我得到以下exception:

System.Net.Internals.SocketExceptionFactory + ExtendedSocketException(连接被拒绝127.0.0.1:1521)

我也尝试在我的docker-compose文件中包含depends_on以及networking选项,并得到相同的结果。

什么可能是这个例外的原因?
我该如何解决这个问题?

从容器内部,你能发送这个命令的输出吗?

apt-get update && apt-get install nmap -y && nmap -p 1521 localhost

如果您不熟悉如何访问容器内的bash,那么这是如何:

查找您的容器ID或名称: docker ps连接到BASH: docker exec -it >containerID< /bin/bash

我有一个感觉,他的问题属于甲骨文,而不是docker,因为你的docker合成文件看起来是正确的。 也许听众还没有启用。 如果nmap说端口没有open话,我也会喜欢lsnrctl status的输出。

https://docs.oracle.com/cd/E11882_01/network.112/e41945/listenercfg.htm#NETAG010

我在我的Mac上遇到同样的问题。 我用> 9000的端口解决了它。