Tag: haskell堆栈

在Docker容器中使用堆栈失败的Haskell安装:打开的文件太多

我有一个简单的Dockerfile FROM haskell:8 WORKDIR "/root" CMD ["/bin/bash"] 我运行安装pwd文件夹到“/ root”。 在我目前的文件夹中,我有一个使用堆栈(funblog)的Haskell项目。 我在stack.yml中configuration了使用“lts-7.20”parsing器,其目的是安装ghc-8.0.1。 在容器内部,运行“堆栈更新”后,我运行了“堆栈设置”,但在GHC编译过程中出现“系统中打开的文件太多”。 这是我的stack.yaml flags: {} packages: – '.' – location: git: https://github.com/agrafix/Spock.git commit: 2c60a48b2c0be0768071cc1b3c7f14590ffcc7d6 subdirs: – Spock – Spock-core – reroute – location: git: https://github.com/agrafix/Spock-digestive.git commit: 4c85647427e21bbaefbf04c4bc315d4bdfabba0e extra-deps: – digestive-bootstrap-0.1.0.1 – blaze-bootstrap-0.1.0.1 – digestive-functors-blaze-0.6.0.6 resolver: lts-7.20 一个导入说明:我不想使用Docker来部署应用程序,只是为了编译它,即作为我的开发过程的一部分。 有任何想法吗? 我应该使用另一个图像没有ghc预安装使用docker? 哪一个? 更新 是的,我可以使用容器中的内置GHC,这是一个好主意,但是想知道在Docker中构buildGHC是否有问题。 更新2 对于任何想重现(在MAC OSX的方式),你可以克隆repo […]

在同一台机器上用堆栈build立两个不同项目的错误

我们有多个我们用堆栈构build的haskell项目。 我们的CI过程在亚马逊上创build实例来运行testing和执行构build。 我们偶尔会得到奇怪的错误。 当我们尝试在同一个实例上运行多个构build时,我怀疑我们会得到它们。 这是我的理解,堆栈应该能够处理这个用例就好了。 在开发计算机上构build两个不同的项目,我从来没有遇到任何问题。 有什么办法来解决这些错误? 有没有办法让堆栈完全隔离运行,所以我们没有得到任何locking或文件错误? 示例错误#1 + stack setup –docker SQLite3 returned ErrorBusy while attempting to perform step. 示例错误#2 + stack build –docker –only-dependencies foundation-0.0.6: configure clock-0.7.2: download … text-1.2.2.1: copy/register /home/ubuntu/.stack/indices/Hackage/packages/exceptions/0.8.3/exceptions-0.8.3.tar.gz.tmp: renameFile: does not exist (No such file or directory)

运行堆栈Docker容器

我对Stack的Docker集成感到困惑。 我设法创build一个图像,通过将stack.yml部分添加到stack.yml使用enable: true ,如集成指南中所述 。 我也可以通过使用在本地启动项目 stack –docker-run-args='–net=bridge –publish=8081:8081' exec myproject 我导航到本地主机:8081 – 作品,太棒了。 但是,如何仅使用Docker启动项目? 用这个我启动容器: docker run -d –restart=always –net=bridge –publish=8081:8081 myproject 但在这一点上似乎没有任何运行。 如果我导航到本地主机:8081我得到连接拒绝。

哈斯克尔,docker工人:堆栈下载失败

我有一个haskell工作的docker镜像: https : //hub.docker.com/r/fpco/stack-build/ 。 直到今天,就是。 项目目录中的任何堆栈命令都会响应: $ stack build Downloading Docker-compatible stack executable Control.Exception.Safe.throwString called with: Could not get release information for Stack from: https://api.github.com/repos/commercialhaskell/stack/releases/tags/v1.6.1.1 Called from: throwString (src/Stack/Setup.hs:1768:14 in stack-1.6.1.1-LhZa5A6LsiS9SkA3QDJMKN:Stack.Setup Google不是很有帮助。 有任何想法吗? 错误完全是“无端的”:昨天的构build是平淡无奇的。

为什么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 […]

yesod二进制文件希望在哪里findconfig文件夹?

问题描述 我正在创build一个docker容器来运行haskell二进制文件。 有问题的二进制文件是用yesod构build的网站。 当容器启动时,它看起来很有前途,但是却失败了: config/client_session_key.aes: openBinaryFile: does not exist (No such file or directory) 重新创build步骤 该二进制文件的Dockerfile是非常基本的。 它看起来像这样: FROM haskell:7.10.3 MAINTAINER Garry Cairns ENV REFRESHED_AT 2015-09-05 RUN ["apt-get", "-y", "update"] RUN ["apt-get", "-y", "install", "libpq-dev"] 我使用docker-compose将其链接到数据库。 docker-compose文件如下所示: version: "2.0" services: database: image: postgres env_file: ./database/env binary: build: ./binary command: /opt/server/api env_file: ./api/env links: – database tty: […]

如何从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", […]

哈斯克尔堆栈图像容器执行在Docker上运行

我正在关注堆栈和docker的turorial,通过docker运行haskell build。 build设和图像创作效果很好,我可以通过docker run -p 5000:5000 {imagename} {app-exe}应用程序docker run -p 5000:5000 {imagename} {app-exe} 我正在使用最新堆栈的function来构build这个最小configuration的docke映像。 image: container: base: "fpco/ubuntu-with-libgmp" 我如何使图像自动启动可执行文件,以便我可以键入docker run -p 5000:5000 {imagename} 。 我知道如何在dockerfile中完成,而不是在堆栈中。 我在想,我必须使用: entrypoints: – appname-exe 没有成功,不pipe我只是使用可执行文件的名称或绝对path。 也许我不明白什么是入口点。 我正在使用Docker for Mac。 任何build议感激。 干杯比约恩