dockerfile CMD - 在不同端口上启动服务器

时间:2017-11-06 22:35:15

标签: ruby-on-rails docker dockerfile

我在docker中有2个rails应用程序,我想使用ForEach-Object同时启动,但我想在不同的端口上启动每个应用程序。

我为每个应用程序提供了一个不同的dockerfile,只有一个共享的docker-compose.yml。 docker-compose有2个条目,每个应用程序一个。

以下是docker-compose up的示例,但由于某种原因,它无法访问或未在指定端口上启动:

Dockerfile

Expose port to the Docker host, so we can access it # from the outside. EXPOSE 5000 # Configure an entry point, so we don't need to specify # "bundle exec" for each of our commands. ENTRYPOINT ["bundle", "exec"] # The main command to run when the container starts. Also # tell the Rails dev server to bind to all interfaces by # default. CMD ["bundle", "exec", "rails", "server”,”-p”, “5000”, "-b", "0.0.0.0"] 的语法是否存在问题?

docker-compose有以下片段,建议我允许主机的端口5000访问容器中的端口5000,但似乎服务器没有在端口5000上运行:

CMD

什么遗失?

1 个答案:

答案 0 :(得分:0)

  1. 主机卷曲是否有问题?或者一个容器无法与另一个容器交谈的问题
  2. 您使用的是主机网络吗?
  3. 如果您在docker-compose.yml中指定端口映射,则无需使用EXPOSE
  4. 您是否完全确定您的服务器是否在指定的主机/端口上运行?
  5. 我发现CMD没有任何问题,但使用CMDENTRYPOINT非常不寻常。我可以看到你为什么在这里做到了,但我会尝试取出ENTRYPOINT。最后,说明服务器确实在主机/端口上运行会很有帮助。你可以尝试

    docker run -it "my/image" bash
    > rails s -p 5000 -b 0.0.0.0 -d
    > curl 0.0.0.0:5000 # should show your landing page if the server is indeed running on port 5000.