您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

运行前由Docker组成的卷挂载

运行前由Docker组成的卷挂载

埃里克·丹嫩伯格(ErikDannenberg)的观点是正确的,体积分层意味着我试图做的事情没有任何意义。(如果您想了解更多信息,那么在Docker网站上还有另一个非常好的解释)。如果我想让Docker做,npm install那么我可以这样做:

FROM node

ADD . /usr/src/app
WORKDIR /usr/src/app

RUN npm install --global gulp-cli \
 && npm install

CMD ["gulp", "watch"]

但是,这不适合我的情况。目标是使用NPM安装项目依赖项,然后运行gulp来构建我的项目。这意味着我需要对项目文件夹具有读写权限, 并且 在容器消失后它必须保留。

卷装入后,我需要做两件事,所以我想出了以下解决方案…

docker / gulp / Dockerfile:

FROM node

RUN npm install --global gulp-cli

ADD start-gulp.sh .

CMD ./start-gulp.sh

docker / gulp / start-gulp.sh:

#!/usr/bin/env bash

until cd /usr/src/app && npm install
do
    echo "retrying npm install"
done
gulp watch

docker-compose.yml:

version: '2'

services:
  build_tools:
    build: docker/gulp
    volumes_from:
      - build_data:rw

  build_data:
    image: debian:jessie
    volumes:
      - .:/usr/src/app

因此,现在容器启动了一个bash脚本,该脚本将不断循环直到可以进入目录 运行npm install。这仍然很脆弱,但是可以。:)

其他 2022/1/1 18:15:45 有441人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶