web-dev-qa-db-ja.com

ホスト環境変数をdockerfileに渡す

ホスト環境変数(ユーザーやホスト名など)をdockerfileに渡すにはどうすればよいですか?

たとえば、ユーザー名がtahaの場合:

echo $USER
taha

同じ出力を得るためにDockerファイルを作成するにはどうすればよいですか?

FROM centos:centos7   
ARG myuser=$USER  
CMD echo $myuser
10
user5524899

私は同じ問題を経験していました。私の解決策は、ymlが環境変数の使用をサポートしているため、docker-compose.yml内に変数を提供することでした。

私の意見では、これは私にとって最も効率的な方法です。_docker run -e myuser=$USER . . ._のようなものを使用してコマンドラインに何度も入力するのが好きではなかったからです

_ENV myuser=$USER_の宣言は機能しません。コンテナでは、_$myuser_はnullに設定されます。

したがって、docker-compose.ymlは次のようになります。

_version: '3'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    environment:
       - "myuser=${USER}"
_

短いコマンド_docker-compose up_で実行できます

変数が適用されたことを確認するには、_docker exec -it container-name printenv_を実行して、コンテナー内のすべての変数をリストします。

10
Serey

Dockerコンテナを起動すると、次のように-eオプションを使用して環境変数を渡すことができます。

docker run -it <image> -e USER=$USER /bin/bash 
4
Theophile Dano