使用docker-compose将容器端口暴露给localhost

时间:2017-08-07 21:04:18

标签: ruby-on-rails docker 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地址上访问我的应用程序?

1 个答案:

答案 0 :(得分:0)

你撰写文件似乎没问题,所以我会检查一些事情来调试这个:

  • 你试过在本地运行吗?如果它在本地无法正常工作,则容器中的服务器可能正在监听127.0.0.1:3000而不是0.0.0.0:3000
  • 如果它在本地工作,则可能是您托管在端口3000上拒绝入站连接,并且它不是docker-compose的问题,而是您的配置?
  • 您是否已登录服务器并检查容器实际上是否正常运行? (所以他们在部署后并没有死亡。)
  • 您是否尝试过从服务器到达终端? (所以ssh into 它并尝试通过localhost with curl或wget访问应用程序)
  • 你检查了日志吗? 申请?也许它毕竟工作,但应用程序崩溃了 或拒绝连接?尝试使用docker-compose logs foobar | less

我想这不是特定的,但没有太多可以用tbh。