1. ホーム
  2. docker

[解決済み] dockerでビルド中に環境変数を設定する方法

2022-03-07 07:22:21

質問

ビルド中にドッカーコンテナに環境変数を設定しようとしていますが、うまくいきません。実行コマンドで設定するとうまくいきますが、ビルド中に設定する必要があります。

ドッカーファイル

FROM ubuntu:latest
ARG TEST_ENV=something

ビルドに使っているコマンド

docker build -t --build-arg TEST_ENV="test" myimage .

実行中

docker run -dit myimage

で利用可能な環境変数を確認しています。

docker exec containerid printenv

となり、その結果は

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=e49c1abfd58b
TERM=xterm
no_proxy=*.local, 169.254/16
HOME=/root

TEST_ENV が存在しない

解決方法は?

ARG で使用される環境変数を設定するためのものです。 docker build 最終的な画像には存在しません。 docker run .

あなたが使うのは ARG には、イメージのビルド時にのみ関係し、イメージから実行するコンテナでは必要ない設定を指定します。また ENV には、ビルド中やコンテナで使用する環境変数を指定します。

このDockerfileで。

FROM ubuntu                                                                                                            
ARG BUILD_TIME=abc                                                                                                     
ENV RUN_TIME=123                                                                                                       
RUN touch /env.txt                                                                                                     
RUN printenv > /env.txt 

で行ったように、ビルドアーグをオーバーライドすることができます。 docker build -t temp --build-arg BUILD_TIME=def . . そうすれば、期待通りのものが得られます。

> docker run temp cat /env.txt                                                                                         
HOSTNAME=b18b9cafe0e0                                                                                                  
RUN_TIME=123                                                                                                           
HOME=/root                                                                                                             
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin                                                      
BUILD_TIME=def                                                                                                         
PWD=/