【问题标题】:Dockerfile COPY command stops working when I change the FROM image当我更改 FROM 映像时,Dockerfile COPY 命令停止工作
【发布时间】:2022-09-28 17:03:16
【问题描述】:

我有两个自定义图像。一种是使用 next.js 开发网站,另一种是开发 API。

我的company/site 图片如下:

FROM node:lts-bullseye-slim

# the rest of it

我的company/api 图像是这样的:

ARG VARIANT=\"6.0-bullseye-slim\"
FROM mcr.microsoft.com/vscode/devcontainers/dotnet:${VARIANT}

# the rest of it

问题是,COPY 命令在我使用company/api 作为我的FROM 图像时有效,但在我使用company/site 时失败。

换句话说,这有效:

FROM company/api

COPY . .

RUN /buildScript.sh

但是对于相同的目录,相同的上下文,相同的一切,这会失败:

FROM compnay/site

COPY . .

RUN /buildScript.sh

换句话说,COPY 不会将文件复制到图像中。一切都是一样的。没有.dockerignore 文件。相同的目录,相同的上下文,相同的语法docker build -t company/api-or-site .

导致此失败的唯一原因是更改基本映像。

什么会导致此错误?我该如何调试呢?

  • 如果您可以在edit 问题中包含minimal reproducible example,这将非常有帮助。在这些基础映像中还进行了哪些其他设置?你怎么知道COPY 没有效果?

标签: docker


【解决方案1】:

在花了几天时间之后,我终于意识到问题所在。

当您使用Dockerfile 创建自定义图像时,如果您使用WORKDIR 命令,那么这将是您未来的COPY 命令中的.

考虑下图:

FROM node:lts-bullseye-slim

# Your specific commands

WORKDIR /project

假设您构建了此映像并将其标记为company/node

现在,如果您想将它用作另一个图像的基础图像和COPY . . 文件,那么这些文件将被复制到/project 目录中。

FROM company/node

COPY . . # here, the second dot means the relative path inside the company/node image

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    相关资源
    最近更新 更多