我有一个dockerized应用程序,需要与外部(而非dockerized)oracle数据库进行通信。
仅当我将hostname
命令的结果附加到localhost
文件中的/etc/hosts
条目时,该应用程序才能在本地计算机上运行。否则,我会从OracleDB驱动程序收到错误消息:
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error: ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
我可以登录我的容器并手动编辑
/etc/hosts
,我希望在重建后避免执行此手动步骤。如何使该文件保持最新状态?此外,似乎由docker设置的
hostname
是容器ID。有没有一种方法可以从
docker-compose.yml
文件中引用容器ID?
最佳答案
也许很容易的方法是为容器设置特定的主机名?
在您的docker-compose文件中设置hostname: foo
,然后根据docker id使用主机名foo代替hosname。
关于docker - docker-compose使用具有容器ID的extra_hosts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40530211/