docker - 如何在 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 中使用不能代替我期望的方式呢?
解决方案
从这个答案来看,$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" .
推荐阅读
- spring-boot - Jackson 不会自动将复杂的字段名称从 json-object 转换为 dto-object
- mysql - SQL 查询:[计算查询结果]
- mqtt - 寻找“现成的裸机 MQTT 代理”
- java - 如何从 MongoCollection 获取实际查询?
- delphi - 退出正在编辑的单元格时如何在 TDBgrid 中立即发布数据
- python - 如何在matplotlib中的圆上均匀分布点?
- build - 向 glibc 添加函数以及如何将绑定值更改为 GLOBAL?
- corda - 错误:运行“java -jar corda-tools-explorer-4.6.jar”时无法找到或加载主类 net.corda.explorer.Main
- c++ - 当结构具有零长度数组作为唯一成员时,数组下标超出范围
- android - 如何在运行时(以编程方式)在 Android 上应用 light(day) 主题