node.js - 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
解决方案
从web
服务中删除卷或仅安装您真正需要的卷,而不是目录中的所有内容。
如果您正在安装本地目录,那么它overwrite
就是容器内的所有内容。
一个好的做法是创建.dockerignore
文件。把不应该从主机复制的东西放在那里node_modules
推荐阅读
- php - 无法在 000webhost 中使用会话变量
- php - 下载图片虽然.php - Wordpress
- python - Python 中的定义方法
- java - 为什么 ObjectOutputStream 用 DataOutputStream 写入 14 个字节而不是 8 个字节?
- java - 将现有活动添加到 TabActivity Android
- .net - vb.net中的货币值计算错误
- debugging - 调试 webOS TV 服务
- r - 在R中的列表中查找最接近的值
- java - Spring Boot 多缓存框架使用缓存解析器
- laravel-5.5 - 全新安装中的 Laravel 助手错误