无法在Docker环境中使用Heroku CLI

问题描述 投票:0回答:2

在使用Heroku CLI进行部署的Ruby应用程序上工作时,我偶然发现了一个问题,试图将整个内容集成到Docker Compose工作流程和微服务架构中。

长话短说,我正在运行一个运行命令的容器:heroku local:start -p 5000(启动一个本地Heroku服务器并公开端口5000,因此可以在http://localhost:5000访问Heroku应用程序)。

我将容器的端口5000绑定到主机上的端口5000。当我在主机上访问http://localhost:5000时,我无法访问Heroku应用程序。如果我在非Docker环境中运行命令,那么同样的工作也很完美。

我对Docker和端口转发很有经验,所以我几乎可以肯定问题不在于撰写文件或端口如何转发。问题似乎在于Heroku CLI以及它如何将端口暴露给它正在运行的环境。

要重现此问题,只需签出此提交并运行docker-compose uphttps://github.com/Dzhuneyt/12factor/commit/5bdfc417ce57eb916c42fdc76bae51e4df30549c

docker heroku
2个回答
1
投票

我相信如果你绑定到0.0.0.0,这将有效

# Procfile
web: bundle exec ruby web.rb -p $PORT -o 0.0.0.0

另外,为方便起见,为了避免在每个调试周期重建,我会添加一个卷装:

# docker-compose.yml
version: '3'

services:
  web:
    build: ./
    volumes:
      - .:/usr/src/app
    ports:
      - "5000:5000"

0
投票

只是为了检查基础知识;一旦你启动服务并等待几秒钟'docker ps'显示服务正在运行吗?如果没有'docker logs {service_name}'提供任何输出?听起来你的网络/端口配置是正确的;这就是为什么我专注于服务输出。但是,如果服务IS正在运行,您可以'telnet localhost 5000'并获得成功连接吗?

© www.soinside.com 2019 - 2024. All rights reserved.