/ #docker #C++ 

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