2016-07-14 1 views
0

私たちは流動性の高いドッカー画像を作成しています。Docker:コンテナの起動時にファイル内の単語を変更してください。

<store> 
    type http 
    endpoint_url ENDPOINTPLACEHOLDER 
    http_method  post # default: post 
    serializer  json # default: form 
    rate_limit_msec 100 # default: 0 = no rate limiting 
    raise_on_error true # default: true 
    authentication none # default: none 
    username  xxx # default: '' 
    password  xxx # default: '', secret: true 
</store> 

だから、これが私たちのイメージである: 画像は、それが含まれてい http_forward.confと呼ばれるファイルが含まれています。しかし、私たちはすべての環境にイメージを使用したいと考えています。環境変数で指定されます。

だから、私たちは私たちの環境のために環境変数を作成します。

ISSUE_SERVICE_URL = http://xxx.dev.xxx.xx/api/fluentdIssue 

このENV変数は、UAT我々はENVの値を持つ私たちのENDPOINTPLACEHOLDERを交換したいたよりUATなど に、私たちのdevの環境にDEVが含まれています変数。 bashのでは、使用することができます。

sed -i -- 's/ENDPOINTPLACEHOLDER/'"$ISSUE_SERVICE_URL"'/g' .../http_forward.conf 

しかし、私たちは私たちのドッキングウィンドウコンテナでこれを使用したい場合は、私たちは、このコマンドを実行する方法/ときがありますか? (私たちはこのファイルをマウントしたくありません)

答えて

0

DockerFileには、CMDで始まる行があるはずです。そこに追加する必要があります。

これを行うには、次の手順を実行します。スクリプトを呼び出すようにCMD行を設定します。たとえば、CMD ./startup.shです。次に、startup.shファイルにsedコマンドが含まれ、次にfluentdを開始するコマンドが表示されます(私は現在CMDであると想定しています)。

1

私たちはansibleでコーディングしました。

ファイルをhttp_forward.confとし、環境に応じて変更を適用してから、フォルダ(ドッキング・コンテナに含む)をドッキング・コンテナにマウントします。

プレイブックはこのようなものになりますが、私はそれをテストしません。

- template: src=http_forward.conf.j2 dest=/config/http_forward.conf mode=0644 

- docker: 
     name: "fluentd" 
     image: "xxx/fluentd" 
     restart_policy: always 
     volumes: 
     - /config:/etc/fluent 
+0

すてきな解決策、私はupvoteしますが、私はhelptoolsなしで方法を見つけようとします – DenCowboy

関連する問題