运行Stack Docker容器

时间:2017-11-04 13:57:30

标签: docker haskell-stack

我对Stack的Docker集成感到困惑。

我设法创建了一个图片,将docker部分添加到stack.yml enable: trueintegration guide

我也可以使用

在本地启动项目

stack --docker-run-args='--net=bridge --publish=8081:8081' exec myproject

我导航到localhost:8081 - 很棒。

但是如何仅使用Docker启动项目?有了这个我开始容器:

docker run -d --restart=always --net=bridge --publish=8081:8081 myproject

但此时似乎没有任何动态。如果我导航到localhost:8081我会拒绝连接。

1 个答案:

答案 0 :(得分:1)

问题解决了!

在容器中启动项目时缺少,如Stack's docs的另一部分所述。具体做法是:

  • 手动启动可执行文件,该文件位于容器中/usr/local/bin/(不太方便)

  • 或者通过将以下内容添加到stack.yaml:

    来配置Stack以自动启动可执行文件
    image:
      containers:
        -
          name: "myimage"
          base: "baseimage"
          entrypoints:
            - myexecutable
    

在此之后,运行stack image container来构建映像(在此之前可能还需要运行stack build)。

然后确保图像已创建/检查名称:

docker image ls

最后,运行它:

docker run --net=bridge --publish=8081:8081 myimage