我有一个Docker支持的ASP NET Core应用程序。
docker-compose文件如下所示:
version: '3'
services:
test:
image: test
build:
context: ./Test
dockerfile: Dockerfile
networks:
test_nw:
aliases:
- test_alias
oracledb:
image: sath89/oracle-12c
ports:
- "1521:1521"
networks:
test_nw:
aliases:
- oracledb_alias
networks:
test_nw:
但是在启动应用程序后,我查看了ASP.NET核心应用程序的容器(执行cker exec -it ... bash
)并检查了/etc/hosts
文件,但是数据库oracledb_alias
的相应别名确实存在没有出现在其中。因此,当在连接字符串中使用oracledb_alias
作为主机名时,应用程序找不到数据库。
我做错了什么?我该如何解决这个问题?
答案 0 :(得分:0)
你没有做错任何事。 Docker的早期版本曾使用/etc/hosts
来解析主机名和链接。现在,docker使用内部DNS服务器。
所以你不能看到任何这样的信息。那么你唯一能做的就是使用一个命令并测试你是否可以达到解析名称
$ dig oracledb_alias
$ ping oracledb_alias
$ telnet oracledb_alias 1521
有关详细信息,请参阅以下链接
https://docs.docker.com/engine/userguide/networking/configure-dns/