首页 > 解决方案 > 如何在 docker 容器中使用 pwd 设置环境变量

问题描述

我想LD_LIBRARY_PATH使用我的 Dockerfile 根据我的工作目录设置变量。我尝试过使用ENV $PWD/some/subpath,但是当我稍后使用它检查容器时,docker exec mycontainer bash -c "env"它显示为/some/subpath而不是/my/working/dir/some/subpath但是我也看到它PWD被定义为/my/working/dir/我期望的那样。那么为什么$PWD在我的 Dockerfile 中使用不能代替我期望的方式呢?

标签: dockerdockerfile

解决方案


这个答案来看,$PWD是运行 shell 时设置的特殊环境变量。与RUN命令不同,ENV命令不会创建 shell,因此PWD永远不会设置。

要在构建时获取 的值PWD,您可以改为使用 build-arg 并传入$PWD构建命令。

你可以在你的 Dockerfile 中这样做:

# dockerfile
ARG working_directory
ENV $working_directory/some/subpath

并像这样构建:

docker build --build-arg "working_directory=$PWD" .

推荐阅读