Dockerfile将新创build的文件添加或复制到泊坞窗图像 – 没有这样的文件或目录

我正在尝试运行一个gulp构build过程,该过程创build了在docker构build过程中运行应用程序的已编译和缩小的文件。 我可以validation吞噬进程的工作原理,但一旦docker构build完成,服务器无法访问构build文件。

泊坞窗,compose.yml

build: ${REPO} depends_on: - api ports: - "8083:8080" volumes: - ${REPO}:/usr/src/app 

Dockerfile:

 FROM python:3.5.1-onbuild ARG mode=dev ENV MODE $mode # Install node.js RUN apt-get update RUN apt-get install -y build-essential RUN apt-get install -y curl RUN curl -sL https://deb.nodesource.com/setup_6.x | bash RUN apt-get install -y nodejs RUN node -v RUN npm -v RUN cd $(npm root -g)/npm \ && npm install fs-extra \ && sed -i -es/graceful-fs/fs-extra/ -es/fs\.rename/fs.move/ ./lib/utils/rename.js # Install deps for & run gulp build WORKDIR /usr/src/app/app RUN npm install RUN npm install --global gulp-cli RUN npm rebuild node-sass RUN gulp //creates /dist, sub-directories and build files in /usr/src/app/app RUN find ./dist //finds all the newly created files expected WORKDIR /usr/src/app ADD /usr/src/app/app/dist/ /usr/src/app/app/dist/ RUN ls EXPOSE 8080 RUN python3 setup.py install CMD python3 manage.py ${MODE} 

构build: docker-compose build find

运行: docker-compose up -d

运行没有ADD行,从最后4行,构build不会失败,但/dist中的文件不可用于应用程序。 以此行运行,在ADD行失败:

 Step 23 : ADD /usr/src/app/app/dist/ /usr/src/app/app/dist/ ERROR: Service 'find' failed to build: lstat usr/src/app/app/dist/: no such file or directory 

我也试过了:

 ADD ./app/dist /usr/src/app/app/dist/ 

它给出了与上面相同的错误信息。 (虽然这对我来说是有意义的,因为dist文件不在我的机器上开始。)

试:

 ADD /usr/src/app/app/dist/* /usr/src/app/app/dist/ 

给我:

 ERROR: Service 'find' failed to build: No source files were specified 

我怀疑这是关于背景和中间容器的一个误解,但我没有想法。

看一下卷,在https://docs.docker.com/engine/reference/builder/#/volume

VOLUME指令创build一个具有指定名称的挂载点,并将其标记为从本地主机或其他容器中持有外部安装的卷。

这将覆盖在构build中创build的新文件夹。

您必须从docker-compose.yml删除volumes ,因此不需要在Dockerfile