Docker compose 运行yarn install

2024-01-30

运行该步骤时运行纱线安装在 docker-compose build 命令期间的 Dockerfile 中,我得到:

[1/4] 正在解析包... [2/4] 正在获取包...信息[电子邮件受保护] /cdn-cgi/l/email-protection: 平台“linux”与该模块不兼容。 信息”[电子邮件受保护] /cdn-cgi/l/email-protection" 是可选依赖项并且失败 兼容性检查。将其从安装中排除。 [3/4] 链接 依赖项...警告“@rails/webpacker >[电子邮件受保护] /cdn-cgi/l/email-protection“ 有 未满足的对等依赖关系“caniuse-lite@^1.0.30000697”。警告>>[电子邮件受保护] /cdn-cgi/l/email-protection“具有未满足的对等依赖性”webpack@^2.2.0 || ^3.0.0".警告"webpack-dev-server >[电子邮件受保护] /cdn-cgi/l/email-protection“具有未满足的同伴依赖性 “webpack@^1.0.0 || ^2.0.0 || ^3.0.0”。 [4/4] 构建新鲜包...

但未创建 node_modules 文件夹。另一方面,当我跑步时

docker-compose run SERVICE_NAME yarn install

I get:

[1/4] 正在解析包... [2/4] 正在获取包...信息[电子邮件受保护] /cdn-cgi/l/email-protection: 平台“linux”与该模块不兼容。 信息”[电子邮件受保护] /cdn-cgi/l/email-protection" 是可选依赖项并且失败 兼容性检查。将其从安装中排除。 [3/4] 链接 依赖项...警告“@rails/webpacker >[电子邮件受保护] /cdn-cgi/l/email-protection“ 有 未满足的对等依赖关系“caniuse-lite@^1.0.30000697”。警告>>[电子邮件受保护] /cdn-cgi/l/email-protection“具有未满足的对等依赖性”webpack@^2.2.0 || ^3.0.0".警告"webpack-dev-server >[电子邮件受保护] /cdn-cgi/l/email-protection“具有未满足的同伴依赖性 “webpack@^1.0.0 || ^2.0.0 || ^3.0.0”。 [4/4] 构建新鲜包...

但然后文件夹节点模块它是在项目文件夹中创建的。

我只是不明白为什么......我期待相同的功能,但我错过了一些东西。

这是我的 docker-compose 服务

services:
  ruby:
    build:
      context: .
      dockerfile: docker/ruby/Dockerfile
    networks:
      - some-network
    volumes:
      - .:/app
    ports:
      - "3000:3000"
    depends_on:
      - mysql
    command: bundle exec rails s -p 3000 -b '0.0.0.0'

Dockerfile

FROM ruby:2.5

# Install dependencies:
# - build-essential: To ensure certain gems can be compiled
# - nodejs: Compile assets
# - npm: Install node modules
# - yarn: Install & manage node modules [should make npm obsolete]
# - libpq-dev
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - && \
    curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
    echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
    apt-get update && \
    apt-get install -qq -y build-essential nodejs yarn \
    libpq-dev \
    mysql-client 

RUN mkdir /app
COPY . /app

WORKDIR /app

# install node dependencies
RUN yarn install

RUN bundle install

首先根据 Dockerfile 创建一个镜像:

  1. 获取图像ruby:2.5从中创建新图像
  2. 安装所有依赖项
  3. 创建文件夹/app
  4. 将系统(项目目录)中的所有文件复制到图像的/app path
  5. Install yarn and bundle(调用图像内的方法)

然后将您的项目文件夹“安装”到图像/app文件夹,因此它与系统根文件夹相同。之后“生成”容器并执行CMD来自 Docker 文件的命令(如果存在)。

记一个帐户这不是图像/容器生成流程的详细解释,但希望它可以帮助您解决您的问题。所以你可以

  1. 直接从容器运行代码(就像在 Dockerfile 中所做的那样)
  2. 或者不要将源代码复制到容器并将代码挂载为卷(就像您在 docker-compose.yml 中所做的那样),然后执行yarn install在您的系统中,或使用安装命令创建入口点脚本:entrypoint: ./entrypoint.sh

文件示例

如果您想“即时”更新源文件(在不重建容器的情况下查看更新),则必须使用第二种方法。

在项目目录中创建文件 run.sh:

run.sh

#!/bin/sh

echo '--- run yarn install'
yarn install

echo '--- run bundle install'
bundle install

# HERE YOU CAN RUN ANY OTHER SCRIPT BEFORE CONTAINER BUILDING

echo '--- create docker image and up it'
sudo docker-compose up -d --build

docker-compose.yml

无需更改(保持问题中的内容)。

Dockerfile

FROM ruby:2.5

# Install dependencies:
# - build-essential: To ensure certain gems can be compiled
# - nodejs: Compile assets
# - npm: Install node modules
# - yarn: Install & manage node modules [should make npm obsolete]
# - libpq-dev
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - && \
    curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
    echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
    apt-get update && \
    apt-get install -qq -y build-essential nodejs yarn \
    libpq-dev \
    mysql-client 

WORKDIR /app

构建和建立容器只需运行命令: sh run.sh

它将在您的系统中安装节点依赖项,然后创建容器,该容器/app文件夹将是您的项目文件夹(在您的系统中),因此您的代码更改将立即生效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker compose 运行yarn install 的相关文章

随机推荐

  • 编译器版本与 .NET Framework 版本 - ASP.NET 应用程序的场景

    设想 我的客户端计算机上有针对 3 5 的 VS 2010 C 4 编译器 我正在开发 ASP NET 应用程序 我在类文件中使用可选参数 支持 C 4 并编译代码 一切似乎都工作正常 后来在运行时发现了一个问题 其中一个旧的 我相信是经典
  • javascript 数组作为字符串列表(保留引号)

    我有一个字符串数组 当我使用 toString 输出它时 引号不会保留 这使得使用 in 构建 mysql 查询变得困难 考虑以下 SELECT FROM Table WHERE column IN item1 item2 item3 it
  • 调用 Camera.release() 后相机正在被使用

    在我的 Android 应用程序中按下拍照按钮后 相机崩溃并显示以下错误消息 E 03 21 2016 10 29 49 164 000007d1 CameraObject Camera is being used after Camera
  • 不使用 WHERE 语句的 INT 比较

    我正在尝试编写一条 MySQL 语句来返回这些结果 Name Day 0 Day 1 Day 2 Day 3 Day 4 Day 5 Jeff 0 3 1 2 1 1 Larry 1 1 4 4 1 0 基于每个员工每天执行的任务数量 我的
  • 如何设置任务经常运行?

    如何让脚本每隔 30 分钟运行一次 我认为不同的操作系统有不同的方法 我正在使用 OS X 只需使用launchd 它是一个非常强大的启动器系统 同时它也是 Mac OS X 的标准启动器系统 如果没有它 当前的 OS X 版本甚至无法启动
  • SceneKit:材质预览始终为黑色

    在 Xcode 中 我有一个从 DAE 文件转换而来的 SCN 文件 我与模型制作者一起设置了所有基于物理 PBR 的设置 但无论我做什么 预览总是黑色的 另外 如果我将环境更改为程序天空 模型也会显示为黑色 I m aware that
  • 如何在 ggplot 中创建气泡网格图?

    I want to create bubble grid charts with ggplot somthing like this 我在网上找不到任何代码或示例 Thanks Using geom point具有离散的 x 和 y 尺度将
  • Python pandas 相当于 R groupby mutate

    因此 在 R 中 当我有一个由 4 列组成的数据框时 将其称为df我想计算一个组的和积之比 我可以用这样的方式 generate data df data frame a c 1 1 0 1 0 b c 1 0 0 1 0 c c 10 5
  • 我在 Ubuntu 14.04 中使用 codeigniter 出现 URL not found 问题错误

    我已将我的 codeigniter 项目与 Ubuntu 14 04 集成 在默认控制器 登录控制器 之后 它给了我 url not found 错误 请找到以下 htaccess 文件
  • Safari xhr (AJAX) 跨域重定向请求失败

    如何重现问题 使用 Safari 向服务器发出 AJAX 请求 让服务器响应 302 到不同的域 如果这些条件之一是not遇见了 就可以了 使用不同的浏览器 它可以工作 让服务器重定向到同一域 它可以工作 Load function in
  • 如何在 Maven 中关闭 findbugs“冗余空检查”?

    我找不到报告 冗余空检查 RCN REDUNDANT NULLCHECK OF NONNULL VALUE 的检测器的名称 有人知道它是什么吗 谷歌搜索只给了我大量的项目报告 自从我使用 JetBrains 以来 我遇到了很多错误 NotN
  • Objective-C:声明私有变量的不同方式。他们之间有什么区别吗?

    我想到了声明私有变量的不同方法 我想知道它们之间是否有任何差异 第一种方式 In h file interface DataExtract NSObject private double test 第二种方式 In m file test
  • 我应该使用 WebMatrix 构建一个真实的网站吗?

    我已经阅读了数百篇文章和博客文章 这些文章和博客文章都说 WebMatrix 只适合初学者等 我的问题是 为什么我不应该使用 WebMatrix 创建一个真实的工作网站 比如一个轻量级的问答网站 使用此工具 我们可以创建网站所需的任何内容
  • 使用 lxml 向现有元素添加属性、删除元素等

    我使用以下方法解析 XML from lxml import etree tree etree parse test xml etree XMLParser 现在我想处理已解析的 XML 我在删除具有命名空间的元素或仅删除一般元素时遇到问题
  • ConcurrentHashMap 有什么缺点吗?

    我需要一个可从多个线程访问的 HashMap 有两个简单的选项 使用普通的 HashMap 并在其上同步 或者使用 ConcurrentHashMap 由于 ConcurrentHashMap 不会阻止读取操作 因此它似乎更适合我的需求 几
  • 使用 jQuery get(0) 索引暂停和播放多个 HTML5 视频?

    我有一个包含多个视频的页面 人们可以单击缩略图来播放每个视频 问题是 对于超过 2 个视频 单击第三个缩略图不会暂停第二个视频 因此我会同时播放 2 个视频 我也在使用fadeOut 切换每个视频的可见性 无论视频数量多少 这都可以正常工作
  • Postman 的 Chrome 拦截器是否仍可与 Postman 的独立版本一起使用?

    我之前使用过 Postman Chrome 的扩展以及邮递员拦截器扩展 https chrome google com webstore detail postman interceptor aicmkgpgakddgnaphhhpliif
  • python 中的降噪算法不起作用

    我一直在尝试使用noisereduce pypi 算法来减少音频文件的噪音 但它给了我一个错误 Traceback most recent call last File C Users Seif Koretum Desktop noise
  • 谁在 BPF 中创建地图

    看完之后man bpf以及其他一些文档来源 我的印象是map只能由用户进程创建 然而下面这个小程序似乎神奇地 create bpf map struct bpf map def SEC maps my map type BPF MAP TY
  • Docker compose 运行yarn install

    运行该步骤时运行纱线安装在 docker compose build 命令期间的 Dockerfile 中 我得到 1 4 正在解析包 2 4 正在获取包 信息 电子邮件受保护 cdn cgi l email protection 平台 l