首页 > 解决方案 > 当 Dockerfile 不在 Docker Hub 的根目录中时,“复制失败:未指定源文件”

问题描述

当我通过 运行我的应用程序时docker-compose up,它可以毫无问题地构建和运行。当我尝试在 Docker Hub 上托管它时,它无法构建并出现错误COPY failed: no source files were specified。我相信这是因为 Dockerfile 不在根目录中。

我的文件夹结构是这样的:

root
-- docker-compose.yml
-- app
   -- Dockerfile
   -- package.json
   -- package-lock.json
   -- src
      -- .....

我的 Dockerfile 在下面,当我运行docker-compose up(指向 Dockerfile 中的/app)时,它运行良好:

FROM node:8.10.0-alpine
WORKDIR /usr/src/app
COPY package*.json /usr/src/app/
RUN npm install --production
COPY . /usr/src/app
EXPOSE 4000
CMD ["npm", "run", "app"]

我想在 Docker Hub 上托管我的项目,但出现以下错误:

Step 1/7 : FROM node:8.10.0-alpine
---> adc4b0f5bc53
Step 2/7 : WORKDIR /usr/src/app
Removing intermediate container 743246352cea
---> 3dcb720d4618
Step 3/7 : COPY package*.json /usr/src/app/
COPY failed: no source files were specified

我设置的指向正确 Dockerfile 位置的构建规则如下:

Docker Hub 构建规则将 Dockerfile 位置显示为 app/Dockerfile

我的 Dockerfile 是错误的,还是当我尝试将 Docker Hub 连接到我的 GitHub 存储库时我没有正确配置它?

对于上下文,GitHub 存储库在这里

标签: node.jsdockerdockerfiledockerhub

解决方案


在构建配置中,您需要配置“构建上下文”目录,而不是更改 Dockerfile 位置。package*.json否则,构建将在文件不存在的 github 存储库的父级中运行。在以下示例中配置自动构建时,请注意“Dockerfile 位置”后面的列:

在此处输入图像描述


推荐阅读