2017-08-07 243 views
0

我有一個rails應用程序,我使用docker-compose來啓動docker容器。使用docker-compose公開容器端口到localhost

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

但我不能訪問我的服務器的IP地址我的應用程序(即server's public ip addressport)。這裏是我的碼頭 - 撰寫文件:

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地址上的應用程序?

+0

我認爲應該按原樣工作。你確定你沒有網路過濾嗎? –

+0

@DanLowe我在阿里雲服務上設置了這個功能。每當我在手機或筆記本電腦上嘗試容器的IP地址時,它將我重定向到0.0.0.0:3000。而如果我嘗試'服務器的IP地址':'端口',那麼它什麼都不顯示。 –

回答

0

您撰寫的文件似乎好了,所以有一些我會檢查,以調試這幾件事情:

  • 你試過本地運行呢?如果它在本地不起作用,則容器中的服務器可能正在監聽127.0.0.1:3000而不是0.0.0.0:3000
  • 如果它在本地工作,這種情況可能是您託管拒絕端口3000上的入站連接,這不是docker-compose問題,而是您的配置問題?
  • 您是否已登錄到服務器並檢查容器實際上正在運行而沒有任何問題? (所以他們沒有在部署後死亡)。
  • 您是否嘗試過從服務器到達端點? (所以ssh到 它,並嘗試通過本地主機與curl或wget訪問應用程序)
  • 你檢查了日誌 的應用程序?也許它工作後,但應用程序崩潰 或拒絕連接?嘗試與docker-compose logs foobar | less

我想這不是真的具體,但沒有太多與tbh去。

相關問題