Translate

2021年4月14日水曜日

DockerfileのCMDを環境変数で処理を分岐させる

小ネタシリーズ。

Dockerfileをビルドしたイメージをdocker run する際に
-e オプションで環境変数を渡して
CMDに指定したコマンドの実行を切り分けたい場合、
if else fi を使えば対応できます。

たとえば以下のようなDockerfileを書いて

FROM ubuntu:20.04

ENV type="fufufu"

# 環境変数 type が "fufufu" か "hehehe" の場合と
# それ以外の場合のかき分け
CMD if [ ${type} = "fufufu" -o ${type} = "hehehe" ]; then \
        echo "type is ${type}"; \
        echo "hehehe"; \
  else \
        echo "type ${type} is unknown"; \
    fi;



docker build -t test/test:latest .

を実行したあとで

docker run -e type="hehehe" test/test:latest

を実行すると

type is hehehe
hehehe


と表示され、

docker run -e type="hohoho" test/test:latest

を実行すると

type hohoho is unknown


と表示されます。

0 件のコメント:

既存の複数のEC2インスタンスを毎週月~金の8:58から18:02まで起動させておくCloud Formation定義ファイル

トライアンドエラーを繰り返し表題の定義ファイルをつくった。 ようやく動作したので、グログにのこしておく。    忘備録として:   AWS EventBridgeを使っている(Lambdaでやる方法もある) イベントバスはdefaultでないとスケジュール化できなかった パラメー...