运行 堆栈 Docker 容器

Run Stack Docker container

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

我设法创建了一个图像,方法是将 docker 部分添加到 stack.ymlenable: true,如 integration 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,我会被拒绝连接。

问题已解决!

缺少在容器中启动项目,如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