Haskell-Alpine Docker映像中的主机名解析不起作用

碳聚合物

问题

我正在尝试使用内部的Haskell应用程序创建docker映像。但是,我在docker容器内的应用程序中网络中其他容器的主机名的域名解析失败(但是我能够wget/ping其他容器及其主机名已正确解析)。

为了找到根本原因,我尝试手动解析主机名(使用Network.DNS软件包),并仅使用中的IP地址servant-client但是,这只会产生隐秘的错误消息:

Network.BSD.getProtocolByName: does not exist (no such protocol name: udp)

我想我在Docker映像中缺少一些软件包。我尝试安装libc6-compat但没有成功(libc6来自Debian的用于编译Haskell应用程序)。而且/etc/protocols包含正确的条目。泊坞窗映像中还缺少什么?

Docker映像

我用于运行应用程序的docker映像alpine:3.6-整个dockerfile,其中没有太多内容这与用于构建应用程序的图像不同(缩小了约20倍)。

我用来构建haskell应用程序的docker镜像基于debian:stretchDockerfile

此处提供带有构建说明的整个源代码(可以跳过角度部分):

https://github.com/carbolymer/blockchain/tree/0b041875f71b2a09dc8568ee7b0cc22460fd5624

碳聚合物

我无法在Alpine + Musl libc上安装GHC 8.2.1。作为一种解决方法,我尝试使用alpine-glibc映像,但是每当我的应用程序尝试解析主机名时,都会导致segfaults。事实证明,这是glibc中的已知错误。

解决方案是使用动态链接的二进制文件+ alpine-glibc映像+gmp-dev附加安装

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章