在没有GHC和cabal的情况下运行Keter

时间:2015-06-15 21:56:00

标签: yesod keter

我有一台服务器,想要部署我的Yesod应用程序,而无需安装GHC和Cabal。我不确定是否可能:老师告诉我,我必须首先在我的机器中编译Keter,然后在服务器上放置keter可执行文件,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:2)

要构建Keter,首先您需要克隆其GitHub repository中的源代码。然后,您需要设置Haskell构建环境并使用cabal buildcabal install来构建源。就个人而言,我使用基于以下Dockerfile的图像派生的Docker容器:

FROM haskell:7.10.2
RUN apt-get update && apt-get install -y \
  git
RUN mkdir /src
RUN cd src && \
  git clone https://github.com/snoyberg/keter && \
  cd keter && \
  git checkout e8b5a3fd5e14dfca466f8acff2a02f0415fceeb0
WORKDIR /src/keter
RUN cabal update
RUN cabal install keter
ENTRYPOINT /bin/bash

这是一张图片,其中包含在特定版本中检出的Keter源代码,其中包含构建所有内容所需的最小GHC工具链。 cabal命令行拉下所有项目的依赖项并编译整个项目。完成此操作后,您可以从keter获取~/.cabal/bin/keter可执行文件。

即使您选择不使用Docker,此文件也会让您大致了解如何设置环境。

现在你已经编译了Keter,你可以在另一个Docker容器中运行它。这里大致了解相应图像的Dockerfile可能是什么样的:

FROM debian
RUN apt-get update && apt-get install -y \
  libgmp-dev \
  nano \
  postgresql
COPY keter /opt/keter/bin/
COPY keter-config.yaml /opt/keter/etc/
EXPOSE 80
CMD ["/opt/keter/bin/keter", "/opt/keter/etc/keter-config.yaml"]

这将采用基本的Debian映像并在其上安装一组最小的包。然后,它将keter可执行文件和配置文件复制到映像中。如果您随后从生成的图像中运行容器,它将启动keter可执行文件。

公平警告:整个过程非常复杂。我还在努力调整确切的细节。祝你好运!