2015-12-17 10 views
7

MySQLデータベースコンテナにバックアップされたSonarQubeコンテナをセットアップしようとしています。 私のドッキングウィンドウ-compose.yml:docker-compose - リンクされたサービスポートを公開する

sonar: 
    environment: 
    - SONARQUBE_USER=sonar 
    - SONARQUBE_PASSWORD=sonar 
    - SONARQUBE_DATABASE=sonar 
    - SONARQUBE_JDBC_URL=jdbc:mysql://db:3306/sonar?useUnicode=true&characterEncoding=utf8 
    build: . 
    ports: 
    - "19000:9000" 
    - "19306:3306" 
    links: 
    - db 
db: 
    environment: 
    - MYSQL_ROOT_PASSWORD=root-secret 
    - MYSQL_USER=sonar 
    - MYSQL_PASSWORD=sonar 
    - MYSQL_DATABASE=sonar 
    image: mysql 

portsセクションでは、私はSonarQube(Webインタフェース)とポート3306(MySQLの接続)から両方のポート9000を公開しようとしています。

"メイン"コンテナからリンクされたサービス(この場合はdbなど)からポートを公開する方法はありますか? sonar

EDIT:自分のニーズをよりよく説明するために、両方のポートを私のlocalhostに公開したいと考えています。私はSonarQubeのランナーがデータベースにアクセスする必要があり、私のマシンのではなくというデータベースでいくつかのクエリを実行したいので、私のマシンから両方のポートにアクセスする必要があります。

+0

私は理解して今。しかし、単に 'db'の' EXPOSE'のポートをホストにマップするのではなく、ソナーのためにしましたか? Sonarは引き続き 'EXPOSE'の' db'ポートを直接使用しますが、localhostからの問い合わせは 'db/ports'セクションで指定したポートの値を使用します(私の編集した回答を参照) – VonC

答えて

6

サービスのポート番号EXPOSEは、別のポートから直接見える(最初のものへのリンク)。

ポートマッピングは必要ありません(SonarQubeおよび3306から9000の場合と同様)
ホストからコンテナにアクセスするには、ポートマッピングが必要です。
コンテナからa (linked) container(いずれも同じドッカーデーモンによって管理されます)には、EXPOSE in its Dockerfileで宣言されたポートに直接アクセスできます。

両方のポートをローカルホストに公開したいとします。私はSonarQubeランナーがデータベースにアクセスする必要があるとして、その後まあ

、私のマシンから両方のポートへのアクセスを必要とする、... dbセクションでは、独自のポートマッピングセクションを持つ必要があります

db: 
    ports: 
    - "xxx:yyyy" 
+0

何らかの理由でそれと私はうまくいっていませんでした。残りの設定は間違っていたようですが、今は魅力的です。 Tks – resilva87

+0

ドッカーがvirtualenvで動作している場合、これは当てはまりますか?私はこれを動作させるように見えない –

関連する問題