代码之家  ›  专栏  ›  技术社区  ›  ian

当对多个源文件使用copy时,目标必须是目录并以/

  •  2
  • ian  · 技术社区  · 7 年前

    我决定用 multiple source form of COPY 要保存中间命令,但当我运行它时,会弹出以下错误:

    Step 17/22 : COPY --chown=$APP_USER:$APP_USER Gemfile Gemfile.lock $APP_PATH
    When using COPY with more than one source file, the destination must be a directory and end with a /
    

    在Dockerfile中我有:

    ARG APP_PATH='/usr/share/app/'
    
    ONBUILD COPY --chown=$APP_USER:$APP_USER Gemfile Gemfile.lock $APP_PATH
    

    编辑

    只是说清楚,这种情况发生在 ONBUILD 无论是现在还是不在,我都是这样粘在 在建 例子


    我试过单引号和不单引号。arg有一个尾随斜杠并且是一个目录,那么为什么构建不遵守它呢?

    我想用 在建 所以如果我能确定 APP_PATH arg填充了一个可以工作的默认值。

    任何帮助或洞察都将不胜感激。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Siyu Zeeshan Akhter    7 年前

    自从 COPY 是在 ONBUILD , ARG 也需要在 在建

    你可以认为Docker会在下一个之后复制(注入)你的onbuild命令 FROM ,在该阶段,如果没有添加arg,它就不知道您的arg。 在建 .

        2
  •  -1
  •   ian    7 年前

    从Docker版本18.09.0开始,构建4d60db4,答案是不要这样做,因为它不会工作。

    最后我对目标目录进行了硬编码(还有chown参数):

    ONBUILD COPY --chown=app:app Gemfile Gemfile.lock /usr/share/app/