微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Docker 上的 Rails 无法启动 - execjs 找不到 JavaScript 运行时节点

如何解决Docker 上的 Rails 无法启动 - execjs 找不到 JavaScript 运行时节点

我正在构建 Rails 6.1.3.1 应用程序的 docker 版本。 原始应用程序在 Ubuntu 20.04.2 和 Node 上运行良好,我从那里大致进行了设置。

在 Docker 中,Node 通过 NVM 安装得很好,但不幸的是 Rails 在启动时找不到它。 Execjs gem 似乎无法识别它。不过,查看它的源代码并没有帮助

Docker 创建期间的版本和路径检查按预期运行且没有错误

非常感谢:)

这是错误消息:

/usr/local/bundle/gems/execjs-2.7.0/lib/execjs/runtimes.rb:58:in `autodetect': Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
    from /usr/local/bundle/gems/execjs-2.7.0/lib/execjs.rb:5:in `<module:ExecJS>'
    from /usr/local/bundle/gems/execjs-2.7.0/lib/execjs.rb:4:in `<main>'
    from /usr/local/bundle/gems/bootsnap-1.7.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'

... etc. ...

    from /usr/local/bundle/gems/spring-2.1.1/lib/spring/application.rb:139:in `run'
    from /usr/local/bundle/gems/spring-2.1.1/lib/spring/application/boot.rb:19:in `<top (required)>'
    from /usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from /usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'

dockerfile:

# Dockerfile
# Use ruby image to build our own image
FROM ruby:2.6.6
# We specify everything will happen within the /app folder inside the container
workdir /app
# We copy these files from our current application to the /app container
copY Gemfile Gemfile.lock ./

# install Node with NVM
# was a pain to make nvm run after install then followed https://stackoverflow.com/a/60137919/10297304
SHELL ["/bin/bash","--login","-i","-c"] # different way of execution sources .bashrc..
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.0/install.sh | bash
SHELL ["/bin/bash","-c"] # back to normal
RUN nvm install 14.15.0
RUN nvm alias default v14.15.0
RUN npm install --global yarn
RUN gem install bundler:2.2.11 # otherwise version mismatch
RUN bundle install
RUN yarn install
RUN which node
RUN node -v
RUN nvm -v
RUN yarn -v
# We copy all the files from our current application to the /app container
copY . .
# We expose the port
EXPOSE 3000
# Start the main process.
CMD ["rails","server","-b","0.0.0.0"]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。