我决定使用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
存在和不存在的情况下发生的,恰好是我在ONBUILD
示例中粘贴了
我尝试使用单引号和不使用单引号。 arg有一个斜杠,并且是目录,那么为什么构建不遵循它?
我想使用ONBUILD
将此Dockerfile制作成模板,因此,如果可以确保将APP_PATH
arg填充为默认值,那就很好了。
任何帮助或见识将不胜感激。
答案 0 :(得分:1)
由于COPY
位于ONBUILD
中,因此ARG
也必须位于ONBUILD
您可以认为Docker会在下一个FROM
之后立即复制(注入)您的ONBUILD命令,在那个阶段,如果您的ARG没有添加ONBUILD
,它不知道您的ARG。 / p>
答案 1 :(得分:0)
从Docker 18.09.0版开始,构建4d60db4的答案是,不要这样做,因为它不起作用。
我最终对目标目录(还有chown args)进行了硬编码:
ONBUILD COPY --chown=app:app Gemfile Gemfile.lock /usr/share/app/