Dockerfile将新创建的文件添加或复制到docker镜像 - 没有这样的文件或目录

时间:2016-11-28 17:08:29

标签: node.js docker docker-compose dockerfile

我正在尝试运行一个gulp构建过程来创建已编译的&在docker构建过程中运行应用程序的缩小文件。我可以验证gulp进程是否有效,但是一旦docker 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 -e s/graceful-fs/fs-extra/ -e s/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}

构建:docker-compose build find

要运行:docker-compose up -d

在没有ADD行的情况下运行,最后4行,构建不会失败,但/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

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

1 个答案:

答案 0 :(得分:0)

https://docs.docker.com/engine/reference/builder/#/volume

中查看卷
  

VOLUME指令创建一个具有指定名称的安装点,并将其标记为从本机主机或其他容器保存外部安装的卷。

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

您必须从volumes移除docker-compose.yml,因此无需ADD

中的Dockerfile