Docker で任意のユーザに環境変数を追加する
やりたいこと
Docker イメージを作るときに C++ ライブラリとか色々いれますが、 実際に(コンテナ内で)使おうとするとヘッダーファイルにパスが通っていなくて面倒なことがあります。
イメージ作成時(Dockerfile内で)にうまいこと追加したいわけですが、 ENV 命令を使っても root ユーザの環境変数として追加されるのみで、 自分でコンテナに追加したユーザとかには追加されません。
追加したい。
解決策
最善か分かりませんが、コンテナ内の /etc/profile.d/ 内に環境変数追加用の sh ファイルを置きました。 このディレクトリ内のファイルはログイン時に全て実行されます。
以下は、C++ の Eigen / Boost ライブラリを追加する Dockerfile の例(一部)。
# Install Eigen
RUN apt-get install -y libeigen3-dev
# Install Boost
RUN apt-get install -y libboost-dev
# Add path (script)
RUN touch /etc/profile.d/my_init.sh && \
echo "export CPLUS_INCLUDE_PATH=/usr/include/eigen3/:/usr/include/boost/" \
>> /etc/profile.d/my_init.sh