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の上でこのドッキングウィンドウのバージョンを使用していますか?セットアップの実行方法を知っていただければ幸いです。