2016-08-26 19 views
7

コンテナを作成するためのDockerファイルをいくつか実行しているドッカー作成ファイルがあります。 Dockerfilesを編集してタイムゾーンを設定したくないのは、私のチームのメンバーがいつでも変更でき、ローカルの環境を変更するためのdocker-compose.override.ymlファイルがあるからです。しかし、私のコンテナの1つ(セレンベースのもの)がホストタイムゾーンを取得していないようで、それが私に問題を引き起こします。それに基づいて、すべてのコンテナにタイムゾーンを適用したいと思っています。今すぐ私のDockerfilesでdocker-composeを使用してコンテナを設定するタイムゾーン

ENV TZ=America/Denver 
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 

すべてうまくいきます。同じコマンドをdocker-compose構文でどのように複製するのですか?

+3

https://github.com/dnvriend/docker-timezone-test/blob/master/docker-compose.yml –

答えて

7
version "2" 

services: 
    serviceA: 
    ... 
    environment: 
     TZ: "America/Denver" 
    command: > 
     sh -c "ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && 
     echo $TZ > /etc/timezone && 
     exec my-main-application" 

編集:質問がそれを要求しませんでしたが、私はちょうどメインプロセスが指定される方法を示すためにexec my-main-applicationを追加しました。 my-main-applicationがCtrl-C(SIGINT/SIGKILL)を受け取るようにするには、execが重要です。

+0

docker-composeの「コマンド」は、デフォルトのコマンドがあればそれを上書きすることに注意してください。参考:https://docs.docker.com/compose/components-file/#/command –

+1

@ Claudiod'Angelisこれは間違いなく、ここでも望ましい動作です。私のコードを簡単に見直すと、コンテナのメインプロセスの開始方法を指定する必要があることがわかりました。それを今追加する。 – Alkaline

関連する問題