当Dockerfile不在Docker Hub的根目录中时,“复制失败:未指定源文件”

时间:2019-07-02 14:45:58

标签: node.js docker dockerfile dockerhub

当我通过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(指向/app中的Dockerfile)时,它运行良好:

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 build rules showing Dockerfile location as app/Dockerfile

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

对于上下文,GitHub存储库为here

1 个答案:

答案 0 :(得分:1)

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

enter image description here