LoginSignup
4
0

More than 5 years have passed since last update.

【ご指摘求む】Dockerfileの環境変数がDocker Composeより優先された

Last updated at Posted at 2018-06-28

背景

開発環境用の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_VALUEFUGA になった。

FROM ubuntu:latest
- ENV HOGEFUGA_VALUE=hoge
RUN "lgtm-script.sh install"
CMD ["lgtm-script.sh", "run"]

考察

とはいえ、自分が見てきた事例ではDocker Composeの方が優先される様な気がするので、
ご指摘等ありましたら、よろしくお願いいたします。

参考資料

4
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0