Dockerfile的env看不到其他环境变量吗?

时间:2018-09-23 16:24:25

标签: docker

在我的Dockerfile中,转到用户postgres。无论如何,环境变量HOME等于/ var / lib / pgsql。现在,我想创建另一个环境变量PGDATA,它应该是$ HOME / data。但是以某种方式我无法在Dockerfile中执行此操作。我做到了:

@Named
@ViewScoped
public class StanzaBean implements Serializable {

    private int activeIndex;

    public int getActiveIndex() {
        return activeIndex;
    }

    /**
     * Automatically called whenever a tab changes and dynamic="true"
     * and cache="false".
     */
    public void setActiveIndex(int activeIndex) {
        this.activeIndex = activeIndex;

        // do other stuff when tab changes
    }

}

因此,当我构建映像时,$ HOME在第三行为空。我怎么了?

1 个答案:

答案 0 :(得分:0)

Environment variable references in Dockerfiles被Docker扩展,然后再传递给shell。特别是,如果ENV语句包括任何类型的$variable引用,则仅可见先前的ENVARG语句。 (例如,通过$HOME指令对USER进行的隐式更改对Dockerfile而言不是直接可见的。)

实际上,由于您控制着Docker映像的整个运行时环境,因此可以轻松地指定一个固定的数据目录,并在以后对其位置进行硬编码。 Docker文件系统空间的布局尤其不需要可配置。

相关问题