Tag: yesod

Yesod部署的Dockerfile

我正在使用一个Yesod应用程序,我想用Docker进行部署。 我正在使用stack进行构build,并且应用程序按照预期在使用stack exec — yesod devel进行本地交互时正常工作。 我现在想把它放在远程服务器上,使用Docker进行部署。 我意识到我也可以 让Dockerfile编译编译并在本地构build 把二进制文件放到一个Docker镜像中,将镜像推送到一个仓库,然后拉到服务器。 假设去的路线#2,我有以下的Dockerfile: FROM haskell:7.10 MAINTAINER stevejb <stevejb> RUN mkdir /yesodapp COPY config /yesodapp/config COPY static /yesodapp/static COPY ./.stack-work/dist/x86_64-linux/Cabal-1.22.4.0/build/sjb-app/sjb-app /yesodapp/sjb-app EXPOSE 3000 ENTRYPOINT ["/yesodapp/sjb-app"] 但是,这并没有做任何事情。 当我尝试从容器内手动启动应用程序时,它不会执行任何操作。 我想我在这里错过了一些简单的东西。 在stack.yaml , image: container: name: stevejb/sjb-app base: fpco/stack-run add: config: /app/config static: /app/static 然后, $ stack image container Sending build […]

为什么Yesod的TestImport模块在loadAppSettings中忽略了Env?

我搭build了一个Yesod应用程序。 其中一个创build的文件是test / TestImport.hs。 它包括以下代码片段: withApp :: SpecWith App -> Spec withApp = before $ do settings <- loadAppSettings ["config/test-settings.yml", "config/settings.yml"] [] ignoreEnv foundation <- makeFoundation settings wipeDB foundation return foundation 为什么它有ignoreEnv参数? 也就是说为什么在testing模式下忽略环境是适当的? 从Yesod仓库中,我推断TestImport.hs是从适用于该应用程序的数据库的hsfiles中生成的。 在我的情况下,这是Postgres之一: https : //github.com/yesodweb/yesod/blob/master/yesod-bin/hsfiles/postgres.hsfiles#L9172 ignoreEnv本身的定义在这里: https : //github.com/yesodweb/yesod/blob/master/yesod/Yesod/Default/Config2.hs#L147 loadAppSettings runTimeFiles compileValues envUsage = do … value <- case envUsage of IgnoreEnv […]

为什么Yesod从独立堆栈快照安装失败?

我正在尝试学习Yesod,但不能离开地面,因为我似乎无法安装它。 为了确保我自己的系统(Mac,Haskell平台)不影响它,我试图build立一个Docker镜像来播放。这里是我的Dockerfile ,即使你对Docker一无所知,它应该很简单看看我在做什么: FROM ubuntu:14.04 ENV HOME /root ENV PATH /root/.cabal/bin:$PATH RUN apt-get update && \ apt-get install -y ghc ghc-haddock zlib1g-dev curl && \ cd /tmp && \ curl http://hackage.haskell.org/package/cabal-install-1.20.0.3/cabal-install-1.20.0.3.tar.gz | tar xzf – && \ cd cabal-install-1.20.0.3 && \ sh ./bootstrap.sh && \ cabal update && \ sed -i "s%^remote-repo: .*%remote-repo: stackage:http://www.stackage.org/stackage/46bb2d7487546939e22612e7d757f1df5a5163e9%" /root/.cabal/config […]

Haskell Yesod堆栈生成可运行的文件

我正在寻找方法来部署我的Yesod项目,并在阅读一些教程(Keter和Docker的方式),我意识到, stack build生成生成一个可运行的文件,可以直接执行,并听取请求,是否有任何理由,我不应该在开始使用它在生产? 如果是这么简单的话,我认为它会很棒…我会在一个托pipe在Google Cloud上的Debian服务器上运行它。

Docker + Yesod链接失败

我正在尝试创build一个Docker化的Yesod应用程序,并且已经初始化了目录./my-app下的Yesod项目。 我的Dockerfile如下所示: FROM haskell:7.8 RUN apt-get update && apt-get install -y libpq5 libpq-dev RUN cabal update ADD my-app /opt/my-app WORKDIR /opt/my-app RUN cabal sandbox delete RUN cabal sandbox init RUN cabal install -j –only-dependencies RUN cabal build RUN dist/build/db-import/db-import EXPOSE 3000 CMD ["dist/build/my-app/my-app", "production", "-p", "3000"] 当我真的去运行docker,它能够build立所有的依赖关系,但我得到一个链接器错误: /opt/my-app/.cabal-sandbox/lib/x86_64-linux-ghc-7.8.4/cryptonite-0.3/libHScryptonite-0.3.a(generic.o):(.data+0x0): multiple definition of `gmtab' /opt/my-app/.cabal-sandbox/lib/x86_64-linux-ghc-7.8.4/cipher-aes-0.2.10/libHScipher-aes-0.2.10.a(aes_generic.o):(.data+0x0): first defined […]

Docker容器中的Yesod应用程序无法发出networking请求

我有一个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 } […]

如何从docker容器运行yesod init?

我正在努力实现的 我想用Haskell和Yesod开发个人网站。 我以前的网页工作主要是Python。 我使用Docker,这样一旦完成任务,我就可以轻松地在Amazon Web Services上进行部署。 我在容器中进行所有的开发 – 所以除了像vim和git这样的工具之外,没有软件直接安装在我的机器上,那么只需部署容器。 我想为这个网站做同样的事情。 我试过了 我的Dockerfile目前看起来像这样: FROM haskell:latest MAINTAINER Garry Cairns ENV REFRESHED_AT 2015-03-19 # create a haskell user to run our programs # ADD must be after chown see http://stackoverflow.com/a/26145444/1281947 RUN ["groupadd", "haskell"] RUN ["useradd", "haskell", "-s", "/bin/bash", "-m", "-g", "haskell", "-G", "haskell"] ENV HOME /home/haskell RUN ["mkdir", […]