2017-09-20 12 views
1

私はDockerコンテナのHerokuに展開しているYesodアプリケーションを持っています。アプリはAmazon SESを使用してメールを送信します。イェソドのdevelのを使用してローカルでアプリケーションを実行する場合、これは正常に動作しますが、Herokuの上の容器の中に、私は次のエラーを取得する:DockerコンテナのYesodアプリケーションがネットワーク要求を行うことができません

HttpExceptionRequest Request { 
    host     = "email.eu-west-1.amazonaws.com" 
    port     = 443 
    secure    = True 
    requestHeaders  = [("Content-Type","application/x-www-form- 
urlencoded"),("Date","Wed, 20 Sep 2017 12:39:49 +0000"),("X-Amzn- 
Authorization","AWS3-HTTPS AWSAccessKeyId=AKIAIBUN4ZEOKYKOB35A, 
Algorithm=HmacSHA256, 
Signature=xh3fi4EJOAe0LOZVCng5NRZIw2D+6P++0aO4Q5Dy0gw=")] 
    path     = "/" 
    queryString   = "" 
    method    = "POST" 
    proxy    = Nothing 
    rawBody    = False 
    redirectCount  = 10 
    responseTimeout  = ResponseTimeoutDefault 
    requestVersion  = HTTP/1.1 
} 
(ConnectionFailure Network.BSD.getProtocolByName: does not exist (no 
such protocol name: tcp)) 

私はコンテナにいくつかの追加パッケージをインストールする必要があります考えています。ここでDockerfileだ:マイケルSnoymanのヒントに

FROM ubuntu:17.04 

RUN apt-get update && apt-get install -y libpq-dev 

WORKDIR /app 

ADD . /app 

EXPOSE 8080 

ENV PGHOST localhost 

CMD "./run" 
+1

私は現在モバイル上にあるので、正確なパッケージ名はわかりませんが、/ etc/protocolsを提供するaptパッケージをインストールする必要があります。 –

+0

ありがとうございます。 – Will

答えて

1

おかげで、私はnetbase/etc/protocolsを移入するために必要なパッケージであることがわかりました。それをインストールした後、Amazon SESのSSL証明書が不明な認証局からのものであると不平を言って新しいエラーが発生しました。

ca-certificatesパッケージをインストールしましたが、これは終了しました。私はまた、libstdc++6がインストールされていないと私に伝えている間違いを見つけたので、それをインストールしました。すべて今働いている。

電子メールを送信する電子メールの認証とAmazon SESを使用して、イェソドで動作するDockerfile私の最後の、次のようである(「実行」コマンドはstack buildからコンパイルされた実行可能です):

FROM ubuntu:17.04 

RUN apt-get update && apt-get install -y libpq-dev libgnutls30 netbase libstdc++6 ca-certificates 

WORKDIR /app 

ADD . /app 

EXPOSE 8080 

ENV PGHOST localhost 

CMD "./run" 

万歳裁判のためにとエラー:

関連する問題