Dockerfile将新创建的文件添加或复制到Docker Image-没有此类文件或目录



我正在尝试运行一个创建汇编的&在Docker Build流程中运行应用程序的缩小文件。我可以验证Gulp进程有效,但是一旦Docker构建完成,服务器就无法访问构建文件。

docker-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

在没有添加行的情况下运行,从末端开始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

我怀疑这是我对上下文的误解。中间容器,但我没有想法。

在https://docs.docker.com/engine/reference/reference/builder/#/volume 中查看卷

卷指令创建一个带有指定名称的安装点,并将其标记为原始主机或其他容器的外部安装量。

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

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

中的ADD

最新更新