2016-07-27 8 views
1

以下のdocker-compose.ymlが指定されています。私はサービスカフカを拡大したいが、特定のポートを割り当てない。環境変数の設定は、docker-composeによってコンテキスト指定のポートを補間できる必要があります。それは可能ですか?それが現在はできませんので割り当てられたポートのDockerの作成、補間

zookeeper: 
    image: wurstmeister/zookeeper 
    ports: 
    - "2181:2181" 
kafka: 
    image: wurstmeister/kafka 
    ports: 
    - "9092" #I am not assigning a remote port here, leaving that to docker-compose 
    links: 
    - zookeeper:zk 
    environment: 
    KAFKA_PORT: 9092 
    KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://localhost:9092, PLAINTEXT://localhost:${ASSIGNED_PORT}" # I would like ASSIGNED_PORT here to be the assigned port of docker-compose 
    KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true" 
    KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: "1" 
    volumes: 
    - /var/run/docker.sock:/var/run/docker.sock 

答えて

1

作曲は、どのような環境変数を注入していません。

しかし、既にドッカーソケットをコンテナに公開しているので、公開されたポートを照会するためにエントリポイントスクリプトを使用して、環境変数を設定してからkafkaを開始することができます。

2

環境変数がdocker-compose upを実行しているコンテキストにある場合、構成オプションに環境変数を含めることができます。

Composeは、docker-composeが実行されているシェル環境の変数値を使用します。例えば
は、シェルはASSIGNED_PORT=8000が含まれており、この設定を供給したとします。あなたはこの構成では、最大ドッキングウィンドウ-構成する実行すると

kafka: 
    image: wurstmeister/kafka 
    ports: 
    - "${ASSIGNED_PORT}:9092" 

、作曲はシェルでASSIGNED_PORT環境変数を探し、中にその値を代入します。この例では、Composeはkafkaコンテナを作成する前に、ポートマッピングを"8000:9092"に解決します。

環境変数が設定されていない場合、Composeは空の文字列で置き換えられます。上記の例では、ASSIGNED_PORTが設定されていない場合、ポートマッピングの値は:9092です(これはもちろん無効なポートマッピングであり、コンテナを作成しようとするとエラーになります)。

$VARIABLE${VARIABLE}の両方の構文がサポートされています。 ${VARIABLE-default}${VARIABLE/foo/bar}などの拡張シェルスタイルの機能はサポートされていません。

これを確認するDocker documentation page

関連する問題