我决定使用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
存在和不存在的情况下都会发生这种情况,我在ONBUILD
示例中粘贴时也是如此
我已经尝试过使用和不使用单引号。arg后面有一个斜杠,并且是一个目录,那么为什么构建不尊重它呢?
我想使用ONBUILD
将此Dockerfile制作成模板,因此如果我能确保APP_PATH
参数填充了一个默认值,这将是很好的。
任何帮助或见解将不胜感激。
4条答案
按热度按时间fcipmucu1#
在我的例子中就是在结尾加上一个斜杠
COPY package*.json .
COPY package*.json ./
(工程)4nkexdtk2#
答案是,在Docker版本18.09.0,build 4d60db4中,不要这样做,因为它不会工作。
最后我硬编码了目标目录(还有chown参数):
zzzyeukh3#
由于
COPY
位于ONBUILD
中,因此ARG
也需要位于ONBUILD
中你可以认为Docker在下一个
FROM
之后复制(注入)你的ONBUILD命令,在那个阶段,如果你的ARG没有添加ONBUILD
,它就不知道你的ARG。suzh9iv84#
在我的示例中,我之前将buildKit设置为false,因此
Settings → Docker Engine