docker-compose使用带容器id的extra_hosts

我有一个dockerized应用程序,需要与外部(而不是dockerized)oracle数据库交谈。

只有当我将hostname命令的结果追加到我的/etc/hosts文件中的localhost条目时,该应用才能在本地机器上运行。 否则,我从OracleDB驱动程序中得到一个错误:

由于:oracle.net.ns.NetException:监听器拒绝与以下错误的连接:ORA-12514,TNS:侦听器当前不知道连接描述符中请求的服务

我可以login我的容器并手动编辑/etc/hosts ,我想在重build后避免这个手动步骤。 我如何保持这个文件是最新的?

此外,似乎hostname设置的hostname是容器ID。

有没有办法从docker-compose.yml文件中引用容器ID?

也许容易的方法是为容器设置特定的主机名?

在你的docker-compose文件中设置hostname: foo ,然后使用hostname foo代替基于docker id的hosname。