热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在Dockerfile中的ENV指令中未设置$PWD

如何解决《在Dockerfile中的ENV指令中未设置$PWD》经验,为你挑选了1个好方法。

我有一个Dockerfile像这样开始:

FROM ubuntu:16.04
WORKDIR /some/path
COPY . .
ENV PYTHOnUSERBASE=$PWD/pyenv PATH=$PWD/pyenv/bin:$PATH
RUN echo "PWD is: $PWD"
RUN echo "PYENV is: $PYTHONUSERBASE"

我发现$PWD(或${PWD})在运行时未设置docker build,作为比较,$PATH正确扩展.

此外,$PWDRUN已经没有问题(它打印/some/path在这种情况下)

所以给定Dockerfile的输出将是:

PWD is: /some/path
PYENV is: /pyenv

有人能告诉我为什么$PWD这么特别吗?我想这可能与行为有关,WORKDIR但我对此没有任何线索.



1> Robert..:

PWD是一个在shell中设置的特殊变量.当docker RUN使用此表单执行某些sh -c 'something'操作时,从ENV指令传递预定义的环境变量,其中PWD不在该列表中(请参阅其中docker inspect ).

ENV指令不会启动shell.只需在图像元数据中添加或更新env vars的当前列表.

我会写你的Dockerfile:

FROM ubuntu:16.04
ENV APP_PATH=/some/path
WORKDIR $APP_PATH
COPY . .
ENV PYTHOnUSERBASE=$APP_PATH/pyenv PATH=$APP_PATH/pyenv/bin:$PATH
RUN echo "PWD is: $PWD"
RUN echo "PYENV is: $PYTHONUSERBASE"

文档中的更多信息:

WORKDIR指令为Dockerfile中的任何RUN,CMD,ENTRYPOINT,COPY和ADD指令设置工作目录.如果WORKDIR不存在,即使它未在任何后续Dockerfile指令中使用,也将创建它.


推荐阅读
author-avatar
曹衡斌_307
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有