Wil*_*ill 5 haskell yesod amazon-ses docker
我有一个Yesod应用,该应用正在Docker容器中部署到Heroku。该应用程序使用Amazon SES发送电子邮件。使用yesod devel在本地运行应用程序时,此方法运行良好,但在Heroku上的容器中出现以下错误:
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))
Run Code Online (Sandbox Code Playgroud)
我在想可能需要在容器中安装一些额外的软件包。这是Dockerfile:
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"
Run Code Online (Sandbox Code Playgroud)
感谢Michael Snoyman的提示,我发现这netbase是填充所需的软件包/etc/protocols。安装后,我收到一个新错误,抱怨Amazon SES的SSL证书来自未知的证书颁发机构。
我安装了ca-certificates软件包,然后消失了。我还遇到一个错误,告诉我libstdc++6未安装-所以我安装了它。现在都在工作。
我的最终版本Dockerfile与Yesod一起使用,使用电子邮件身份验证和Amazon SES发送电子邮件,如下所示(“ run”命令是的编译后的可执行文件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"
Run Code Online (Sandbox Code Playgroud)
万岁反复试验:)
| 归档时间: |
|
| 查看次数: |
269 次 |
| 最近记录: |