使用docker-compose公开容器端口到本地主机

我有一个rails应用程序,我使用docker-compose来启动docker容器。

$ docker-compose -f docker-compose.yml up -d

但我无法访问我的服务器的IP地址(即server's public ip addressport )我的应用程序。 这是我的docker-compose文件:

 version: '3' volumes: database: app: search_conf: services: pgsql: container_name: pgsql image: postgres volumes: - database:/var/lib/postgresql/data sphinx: container_name: sphinx image: leodido/sphinxsearch:2.2.9 hostname: sphinx command: searchd.sh links: - pgsql volumes: - app:/app - search_conf:/usr/local/etc/ foobar: container_name: foobar env_file: .env.dev links: - pgsql - sphinx build: context: . ports: - "3000:3000" command: rails s volumes: - app:/app 

我如何访问我的服务器的IP地址上的应用程序?

你撰写文件似乎没关系,所以有几件事,我会检查,以debugging这个:

  • 你尝试过在本地运行吗? 如果在本地服务器无法正常工作,那么容器可能正在监听127.0.0.1:3000而不是0.0.0.0:3000
  • 如果它在本地工作,这种情况可能是你主持拒绝在端口3000入站连接,这不是一个docker构成问题,但与您的configuration?
  • 你login到服务器,并检查容器实际上运行没有任何问题? (所以他们没有在部署后死亡)。
  • 你有没有尝试从服务器到达端点? (所以ssh进入它,并尝试通过本地主机curl或wget访问应用程序)
  • 你有没有检查应用程序的日志? 也许它工作毕竟,但应用程序崩溃或拒绝连接? 使用docker-compose logs foobar | less尝试 docker-compose logs foobar | less

我想这不是真的具体,但没有太多与tbh去。