InetAddress does’nt resolve ip on alpine docker container
C’est un problème qu’on a rencontré quand on a voulu réduire la taille des docker en utilisant l’image Alpine comme image de base.
Symptome
Exception in thread "main" java.net.UnknownHostException: mysql: unknown error
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
at java.net.InetAddress.getAllByName0(InetAddress.java:1276)
at java.net.InetAddress.getAllByName(InetAddress.java:1192)
at java.net.InetAddress.getAllByName(InetAddress.java:1126)
at java.net.InetAddress.getByName(InetAddress.java:1076)
at SomaDBTest.main(SomaDBTest.java:52)
Solution
En gros l’image Alpine veut par défaut résoudre les noms de machine pas DNS en priorité au lieu d’utiliser d’abord les fichiers (hosts).
RUN echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf