我正在尝试运行一个gulp构建过程来创建已编译的&在docker构建过程中运行应用程序的缩小文件。我可以验证gulp进程是否有效,但是一旦docker build完成,服务器就无法访问构建文件。
build: ${REPO}
depends_on:
- api
ports:
- "8083:8080"
volumes:
- ${REPO}:/usr/src/app
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
我怀疑这是一个关于背景和误解的误解。中间容器,但我没有想法。
答案 0 :(得分:0)
在https://docs.docker.com/engine/reference/builder/#/volume
中查看卷VOLUME指令创建一个具有指定名称的安装点,并将其标记为从本机主机或其他容器保存外部安装的卷。
这将覆盖在构建中创建的新文件夹。
您必须从volumes
移除docker-compose.yml
,因此无需ADD
Dockerfile