いくつかのDockerfileを実行してコンテナーを作成するdocker-composeファイルがあります。タイムゾーンを設定するためにDockerfileを編集したくないのは、チームのメンバーによっていつでも変更される可能性があり、ローカル環境を変更するためのdocker-compose.override.ymlファイルがあるためです。ただし、私のコンテナの1つ(Seleniumベースのコンテナ)がホストのタイムゾーンを取得していないようで、問題が発生します。それに基づいて、すべてのコンテナーにタイムゾーンを適用します。今、私のDockerfilesで
ENV TZ=America/Denver
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
そして、すべてが正常に動作します。 docker-compose構文で同じコマンドを複製するにはどうすればよいですか?
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
メインプロセスの指定方法を示します。 exec
は、my-main-application
はCtrl-C(SIGINT/SIGKILL)を受け取ります。
これは簡単な解決策です。
environment:
- TZ=America/Denver
最も簡単な解決策は、このようにdocker-compose.ymlのボリュームを共有することです
ipchanger:
image: codertarasvaskiv/ipchanger:raspberry
volumes:
- "/etc/localtime:/etc/localtime:ro"