2016-11-05 12 views
2

TL; DR:カスタム(標準ではない)コンテナで別のコンテナを使用できるようにするには、ポート?docker-compose:コンテナ間で接続が拒否されましたが、ホストからアクセス可能なサービス

Webアプリケーション(Padrino [Ruby])、Postgres、Redis、およびキューイングフレームワーク(Sidekiq)用のコンテナがかなりあります。 WebアプリケーションにはカスタムDockerfileが付属し、残りのサービスは標準画像(Postgres、Redis)から、またはWebアプリケーション(Sidekiq)からデータをマウントします。彼らは、以下のdocker-compose.ymlを介して一緒につながり、次のとおりです。ここで注目すべき

version: '2' 

services: 
    web: 
    build: . 
    command: 'bundle exec puma -C config/puma.rb' 
    volumes: 
     - .:/myapp 
    ports: 
     - "9000:3000" 
    depends_on: 
     - postgres 
     - redis 

    sidekiq: 
    build: . 
    command: 'bundle exec sidekiq -C config/sidekiq.yml -r ./config/boot.rb' 
    volumes: 
     - .:/myapp 
    depends_on: 
     - postgres 
     - redis 

    postgres: 
    image: postgres:9.5 
    environment: 
     POSTGRES_USER: my-postgres-user 
     POSTGRES_PASSWORD: my-postgres-pass 
    ports: 
     - '9001:5432' 
    volumes: 
     - 'postgres:/var/lib/postgresql/data' 

    redis: 
    image: redis 
    ports: 
     - '9002:6379' 
    volumes: 
     - 'redis:/var/lib/redis/data' 

volumes: 
    redis: 
    postgres: 

一つの重要なポイントは、私が非標準ポート(9000から9002)にコンテナのサービスを公開していますということです。

設定をdocker-compose upで開始すると、RedisとPostgresのコンテナは正常に表示されますが、redis:9002のRedisに接続できないため、WebアプリケーションとSidekiqのコンテナは失敗します。驚くべきことに、代わりに9002

docker psの私は6379(標準Redisのポート)を使用する場合を作品同じ設定も細かい私の知る限りになります:

CONTAINER ID  IMAGE     COMMAND     CREATED     STATUS    PORTS        NAMES 
9148566c2509  redis     "docker-entrypoint.sh" Less than a second ago Up About a minute 0.0.0.0:9002->6379/tcp    rubydockerpadrino_redis_1 
e6d47321c939  postgres:9.5   "/docker-entrypoint.s" Less than a second ago Up About a minute 0.0.0.0:9001->5432/tcp    rubydockerpadrino_postgres_1 

さらに混乱何:私はRedisのにアクセスすることができますコンテナーからredis-cli -h localhost -p 9002 -n 0を経由してください。ただし、WebアプリケーションとSidekiqコンテナーは接続を確立できません。私が間違って何をやっている Docker version 1.12.3, build 6b644ec, experimental

任意のアイデア:

私はMacOSの上でこのドッキングウィンドウのバージョンを使用していますか?セットアップの実行方法を知っていただければ幸いです。

答えて

関連する問題