質問: Dockerコンテナ内の一般ユーザに環境変数を渡す方法を探しています。 具体的には以下のような状況です。 --- Dockerコンテナ内に一般ユーザーを作成し、そのユーザによって実行されるべきコマンドがあります。 今の所コンテナの起動コマンドは以下のようになっています。 ``` docker run -it --rm --entrypoint su イメージ名 - 一般ユーザ -c "コマンド" ``` で、このコマンドに新たな環境変数を渡したいのですが、以下の要求があります。 * 環境変数は実行環境ごとに異なるので、イメージ内のファイルには書き込めない * イメージ内の `~/.bashrc` `~/.bash_profile` `/etc/profile` `/etc/bashrc` にはすでに大量の設定が書かれており、それらはそのまま使いたい * 環境変数を設定し `コマンド` を呼び出すためのスクリプトを `-v` オプションで渡す、というのは避けたい * 渡す環境変数は複数あるので、できれば以下の形は避けたい ``` docker run -it --rm --entrypoint su イメージ名 - 一般ユーザ -c "変数=値 コマンド" ``` 何か方法はあるでしょうか。 何卒ご教示ください。
回答: この Docker イメージを最初から一般ユーザーとして実行する想定なのであれば、イメージを作る際、つまり Dockerfile の時点から一般ユーザーを作って一般ユーザーとして立ち上がるようにしておくのがよくあるやり方です。この方法であれば環境変数も普通の `ENV` 命令で与えられます。 つまり、`useradd` & `groupadd` などお使いの OS に準拠したやり方でユーザーを追加し、`USER` 命令でそのユーザーとしてログインするように指定すれば良いです。 英語版の関連質問: How to add user with dockerfile?