4

Docker Compose を使用してコンテナーを起動します。次の env var: でホスト ポートを (特に) 公開する RethinkDB サービス コンテナーがありますAPP_RETHINKDB_1_PORT_28015_TCP_ADDR

ただし、私のアプリは、このホストを という名前の環境変数として受け取る必要がありますRETHINKDB_HOST

私の質問は、コンテナを起動するときに、指定されたenv varを目的のenv varにエイリアスするにはどうすればよいですか(できれば最もDockerっぽい方法で)?私は試した:

env_file: .env
environment:
  - RETHINKDB_HOST=$APP_RETHINKDB_1_PORT_28015_TCP_ADDR

しかし、第一に、それは機能せず、第二に、それが最善の方法であるかのようには見えません。

4

2 に答える 2

0

使用しようとしている環境変数名APP_RETHINKDB_1_PORT_28015_TCP_ADDRには、すでにポート番号が含まれています。それはすでに一種の「ハードコード」です。これを使うしかないと思います

environment:
  - RETHINKDB_HOST=28015
于 2015-07-15T13:37:41.983 に答える
0

あるコンテナが別のコンテナにリンクされると、環境変数だけでなく、ホスト エントリも設定されます。例えば、

ubuntu:
    links:
        rethinkdb:rethinkdb 

ubuntu がping rethinkdbIP アドレスを解決できるようにします。これにより、設定できるようになりますRETHINKDB_HOST=rethinkdb。ただし、ポートの変数に依存している場合、これは機能しませんが、起動スクリプトを追加するか、CMD.

CMDたとえば、現在 に設定されているを変更する場合command: service rethink startは、変数の割り当てを先頭に追加するように変更します。

command: sh -c 'RETHINKDB_HOST=$APP_RETHINKDB_1_PORT_28015_TCP_ADDR && service rethink start'

スタートアップ スクリプトを使用している場合、アプローチは似ています。サービスが開始する前に、その変数の割り当てを行として追加するだけです。

于 2015-06-04T20:05:50.580 に答える