背景
開発環境用のDockerコンテナを作ろうとしたら、
内部でoss.sonatype.orgからのパッケージダウンロードに3時間以上かかってるので、
オレオレDockerfileを作ったら、それと一緒に使っていたdocker-compose.ymlの環境変数が
Dockerイメージに適用されなかったのでメモする。
実行サンプル
FROM ubuntu:latest
ENV HOGEFUGA_VALUE=hoge
RUN "lgtm-script.sh install"
CMD ["lgtm-script.sh", "run"]
# 補足
#
# HOGEFUGA_VALUE は lgtm-script.sh の中の
# 下記のyml内で展開される。
#
# lgtm-script.sh の installで、
# erbファイルを元にymlを生成し、
# 生成されたymlを元に
# oss.sonatype.orgからパッケージを取得する。
#
# run でcatalina.shを叩く(tomcatが起動)
docker-compose.yml
lgtm:
image: lgtm:dev-ours
environment:
- HOGEFUGA_VALUE=FUGA
そしてホスト環境で以下を実行。
# docker build -t lgtm:dev-ours /path/of/dockerfile/
# docker-compose up -d
# docker-compose exec lgtm /bin/bash
$ printenv
HOGEFUGA_VALUE=hoge
ゑ……、docker-compose.ymlの方が適用されると思ったのだが……。
解決方法
Dockerfile内で環境変数を指定してるところを省いてDockerイメージの再ビルド後、
docker-compose up -d
を実行後、期待通り HOGEFUGA_VALUE
が FUGA
になった。
FROM ubuntu:latest
- ENV HOGEFUGA_VALUE=hoge
RUN "lgtm-script.sh install"
CMD ["lgtm-script.sh", "run"]
考察
とはいえ、自分が見てきた事例ではDocker Composeの方が優先される様な気がするので、
ご指摘等ありましたら、よろしくお願いいたします。