69147


Dockerコンテナ内の一般ユーザに環境変数を渡す方法を探しています。  
具体的には以下のような状況です。

* * *

Dockerコンテナ内に一般ユーザーを作成し、そのユーザによって実行されるべきコマンドがあります。

今の所コンテナの起動コマンドは以下のようになっています。

[code]

    docker run -it --rm  --entrypoint su イメージ名 - 一般ユーザ -c "コマンド"
    
[/code]

で、このコマンドに新たな環境変数を渡したいのですが、以下の要求があります。

  * 環境変数は実行環境ごとに異なるので、イメージ内のファイルには書き込めない
  * イメージ内の `~/.bashrc` `~/.bash_profile` `/etc/profile` `/etc/bashrc` にはすでに大量の設定が書かれており、それらはそのまま使いたい
  * 環境変数を設定し `コマンド` を呼び出すためのスクリプトを `-v` オプションで渡す、というのは避けたい
  * 渡す環境変数は複数あるので、できれば以下の形は避けたい 
[code]    docker run -it --rm  --entrypoint su イメージ名 - 一般ユーザ -c "変数=値 コマンド"

    
[/code]

何か方法はあるでしょうか。  
何卒ご教示ください。


CC BY-SA 4.0
2020-07-31T14:01:33.297
69144
2020-08-01T04:44:17.107
2020-08-01T04:44:17.107
28998
28998
question
docker bash
Dockerコンテナ内の一般ユーザに環境変数を渡す方法


この Docker イメージを最初から一般ユーザーとして実行する想定なのであれば、イメージを作る際、つまり Dockerfile
の時点から一般ユーザーを作って一般ユーザーとして立ち上がるようにしておくのがよくあるやり方です。この方法であれば環境変数も普通の [`ENV`
命令](https://docs.docker.com/engine/reference/builder/#env)で与えられます。

つまり、`useradd` & `groupadd` などお使いの OS に準拠したやり方でユーザーを追加し、[`USER`
命令](https://docs.docker.com/engine/reference/builder/#user)でそのユーザーとしてログインするように指定すれば良いです。

英語版の関連質問: [How to add user with
dockerfile?](https://stackoverflow.com/q/39855304/5989200)


CC BY-SA 4.0
2020-07-31T15:20:54.730
69147
2020-07-31T15:20:54.730
19110
69144
answer