ASP NET核心:docker-compose中的别名不会出现在/ etc / hosts中

我有一个Docker支持ASP NET核心应用程序。

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 Core应用程序的容器(执行cker exec -it ... bash )并检查了/etc/hosts文件,但是数据库oracledb_alias的相应别名没有出现在其中。 所以当在连接string中使用oracledb_alias作为主机名时,应用程序找不到数据库。

我做错了什么? 我如何解决这个问题?

你没有做错什么。 Docker的早期版本使用/etc/hosts来parsing主机名和链接。 现在docker使用一个内部的DNS服务器。

所以你不会看到任何信息。 那么你只能使用一个命令来testing你是否能够parsing这个名字

 $ dig oracledb_alias $ ping oracledb_alias $ telnet oracledb_alias 1521 

请参阅下面的链接了解更多详情

https://docs.docker.com/engine/userguide/networking/configure-dns/