新手问题 使用 docker-compose 不能生成 node_modules 目录

tomnia · June 05, 2017 · Last by Rei replied at June 06, 2017 · 2645 hits

使用 docker-compose up 后,无错误信息提示,node_modules 目录却未生成。

但是使用 docker-compose run node bash 进入容器,跑 yarn 可以生成 node_modules,求大牛指点。

docker-compose.yml 如下:

version: "2"
services:
  app:
    build: .
    expose:
      - "3000"
    volumes:
      - .:/var/www/myproject

  node:
    build:
      context: .
      dockerfile: config/containers/node/Dockerfile
    volumes_from:
      - app

node/Dockerfile

FROM node:6.10.3

ENV APP_HOME /var/www/myproject

WORKDIR $APP_HOME

ADD package.json $APP_HOME/

RUN npm install -g yarn && yarn

CMD ["node_modules/.bin/webpack", "--config", "frontend/build/webpack.prod.conf.js", "-p"]

感觉 Dockerfile 已经生成了目录,但是 Dockerfile 没指定 volume, 然后 docker-compose 指定 volume 就把外面的无目录同步进去... 杯具了

这个有时还和操作系统或者缓存有关... 是比较坑的...

  1. build 一次镜像安装初始依赖。
  2. 在镜像里 run 一次 npm/yarn install 更新 package,并通过 volume 同步到 host。
  3. rebuild 一次镜像把 package 安装到镜像里。

之前给官方 Rails 文档提了个 Issue 也是这种情况 https://github.com/docker/docker.github.io/issues/3024

Reply to Rei

看来是我理解错了,我还以为可以一个 docker-compose up 搞定所有的事情。把 docker-compose 看成 mina 的一种替代这种想法好像也不对,是吧

Reply to tomnia

Docker compose 可以搞定开发环境。部署我还没摸索够。

You need to Sign in before reply, if you don't have an account, please Sign up first.