我在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
什么遗失?
答案 0 :(得分:0)
EXPOSE
我发现CMD
没有任何问题,但使用CMD
和ENTRYPOINT
非常不寻常。我可以看到你为什么在这里做到了,但我会尝试取出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.