首页 > 解决方案 > Docker 没有使用 yarn 安装 node_modules

问题描述

我正在使用 Yarn 运行带有 Webpacker 的 Ruby on Rails 应用程序,并尝试通过 Docker Compose 在 Docker 上运行它。当我运行docker compose build时,它看起来运行成功,但是找不到 node_modules 文件夹,我无法使用任何节点包。我尝试- /app/node_modules按照其他帖子中的建议添加卷,但无济于事。

FROM ruby:3.0.0
RUN bundle config --global frozen 1

WORKDIR /app

COPY Gemfile Gemfile.lock ./
RUN bundle install


COPY . .

RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash -
RUN apt-get install -y nodejs
RUN npm install --global yarn
RUN yarn install

码头工人-compose.yml

version: "3.9"
services:
  web:
    build: .
    ports:
      - "3000:3000"
    command: "rails server -b 0.0.0.0"
    volumes:
      - ./:/app
      - /app/node_modules
  db:
    image: "postgres:13"
    ports:
      - "5432:5432"
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=password

标签: node.jsruby-on-railsdockeryarnpkg

解决方案


web服务中删除卷或仅安装您真正需要的卷,而不是目录中的所有内容。
如果您正在安装本地目录,那么它overwrite就是容器内的所有内容。

一个好的做法是创建.dockerignore文件。把不应该从主机复制的东西放在那里node_modules


推荐阅读