首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby on Rails in Docker on Apple Silicon (M1)

Ruby on Rails in Docker on Apple Silicon (M1)
EN

Stack Overflow用户
提问于 2021-02-16 22:15:18
回答 2查看 2.5K关注 0票数 5

我正在尝试让Ruby on Rails在Apple Silicon (M1) Macbook上的Docker上运行。我遇到的问题是Javascript运行时。gem mini_racer依赖于未正确安装的libv8。有类似问题的人似乎要么从源代码编译V8,然后强制libv8/mini_racer使用系统版本。另一条途径似乎是改用NodeJS。

有没有人在M1芯片上的Docker中启动并运行了RoR与Javascript运行时?

EN

回答 2

Stack Overflow用户

发布于 2021-02-17 01:18:27

在我的记忆中,它似乎不是关于M1的,而是mini_racer与libv8有一些问题,但在mac上,我们通常使用以下方法来解决问题

代码语言:javascript
复制
brew tap homebrew/versions
brew install v8-315

gem install libv8 -v '3.16.14.13' -- --with-system-v8
gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315

bundle install

但是不确定为什么它会发生在你的docker上,另一种方法是检查v8的安装位置,并使用该路径更改-- url。

在docker try error中,提交更多行,让build完成,然后可以ssh in,并尝试使用本地命令。有人提出了以下解决方案。

代码语言:javascript
复制
RUN gem install -N libv8 -v '3.16.14.13' -- --with-system-v8 \
 && bundle config --global build.libv8 --with-system-v8

您可以共享您的dockerfile,因此首先我们可以确认它在正常的机器上工作,然后您可以试用。但当然,M1是不同的架构,一些程序还没有准备好。

票数 1
EN

Stack Overflow用户

发布于 2021-03-04 18:59:11

从V8的角度来看,我能说的是:

在硬件上运行最新的V8版本(8.7及更高版本)的

  • 目前还不支持(但将会支持) M1 Mac上的Docker V8;现在你必须在Intel Mac上交叉编译。
  • 在一条评论中说,你正在使用Ubuntu在Docker容器中运行这个程序。在这种情况下,请看一下https://bugs.chromium.org/p/v8/issues/detail?id=6458#c7。通常,在Linux-arm64上编译V8应该可以。
  • V8 3.16实际上是石器时代(8年前)的版本,当时甚至没有arm64端口,所以如果你坚持使用那个版本,你将不得不使用32位arm版本,并且你可能不得不使用旧的编译器,通常需要做一些手动工作来获得一些依赖项的正确(旧)版本。我最近听说在arm64机器上构建32位arm是行不通的(因为从历史上看,没有人有理由这样做),所以你会再次考虑在x86机器上进行交叉编译(32或64个bits).
  • Different V8分支通常不兼容x86;因此,如果您的mini_racer版本需要V8 3.16,那么需要做大量工作才能更新它以与V8 8.7 (或当前的稳定版本8.9)一起工作)。甚至互换3.15和3.16充其量也是可疑的,很可能不会起作用。

(我不熟悉RoR或Docker,所以我不能提供关于它们的细节。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66226072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档