2017-11-12 3 views
4

問題

を動作しません。しかし、ドッカーコンテナ内の私のアプリケーション内のネットワーク内の他のコンテナのホスト名のドメイン名解決は失敗しますが、wget/ping他のコンテナとそのホスト名が正しく解決されています。ハスケル - アルパインドッカーの画像内のホスト名の解決は、私は内部のHaskellのアプリケーションとのドッキングウィンドウの画像を作成しようとしています

根本的な原因を見つけるために、私は手動でホスト名(Network.DNSパッケージを使用)を解決して、servant-clientのIPアドレスのみを使用しようとしました。しかし、これは単なる不可解なエラーメッセージが得られます。

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

私は私が私のドッキングウィンドウの画像内のいくつかのパッケージをしないのですね。 libc6-compatをインストールしようとしましたが、成功しませんでした(Debianのlibc6はHaskellアプリケーションのコンパイルに使用されました)。さらに、/etc/protocolsには正しいエントリが含まれています。ドッカーの画像の中には何が欠けていますか? Whole dockerfile, there's not much in it - 私は、アプリケーションを実行するために使用しています

ドッカー画像

ドッキングウィンドウの画像はalpine:3.6です。これは、アプリケーションを構築するために使用されたイメージとは異なるイメージです(20倍小さい)。

私がhaskellアプリケーションを構築するために使用しているドッカーの画像は、debian:stretchに基づいています。 Dockerfile。ビルド手順と

全体のソースコードは、(角部分をスキップすることができます)ここにあります:あなたが実行するために、あなたのHaskellコードのためのいくつかのリンクの依存関係が欠落しているよう

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

+0

'strace'を試しましたか? – melpomene

+0

Dockerの中で: 'strace:attach:ptrace(PTRACE_ATTACH、1):操作が許可されていません。 ' – carbolymer

+0

haskellはインタプリタなしで実行するバイナリをビルドしますか?コードを実行するために外部バイナリを必要とするjava、ruby、nodejとは異なります。 – Matt

答えて

0

私はGHC 8.2.1をalpine + musl libcにインストールできませんでした。回避策として、alpine-glibcイメージを使用しようとしましたが、アプリケーションがホスト名を解決しようとするたびにsegfaultsが発生しました。 It turns out, that this is known bug in glibc.

解決策は、動的にリンクされたバイナリ+ alpine-glibc image + install gmp-devを追加で使用することです。

1

ですね。

アルパインはサイズを縮小するためにmusl libcを使用しています。つまり、ほとんどの標準リンクバイナリは、GNU libcを使用して標準ディストリビューションから実行されません。 alpine imageでアプリを通常どおりコンパイルするか、statically linked binary to run in any Linux distro/containerを作成してください。

ベースのDebianレイヤーは、それを使用するすべてのイメージで共有されるため、おそらくあなたが思うほどのスペースを節約しているとは限りません。 Debianイメージを使いやすくするなら、それを使ってください。

+0

はい、静的にリンクされたバイナリを作成しています。ここにbuildコマンドがあります:https://github.com/carbolymer/docker-images/blob/master/haskell-stack/stack-build-static。ここでの問題は、元のglibcが必要な 'network' Haskellパッケージだと思います。ここでの質問は、musl libcはGNU libcと互換性がありますか? Btw。リンクした記事は古く、ghc-8.2.1で動作しません。 – carbolymer

関連する問題