ホスト環境変数(ユーザーやホスト名など)をdockerfileに渡すにはどうすればよいですか?
たとえば、ユーザー名がtaha
の場合:
echo $USER
taha
同じ出力を得るためにDockerファイルを作成するにはどうすればよいですか?
FROM centos:centos7
ARG myuser=$USER
CMD echo $myuser
私は同じ問題を経験していました。私の解決策は、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
_を実行して、コンテナー内のすべての変数をリストします。
Dockerコンテナを起動すると、次のように-e
オプションを使用して環境変数を渡すことができます。
docker run -it <image> -e USER=$USER /bin/bash