无法打开共享对象文件:启动 Rails 时没有这样的文件或目录 - /usr/local/bundle/gems/mysql2-0.5.3/lib/mysql2/mysql2.so (LoadError)

问题描述

我正在尝试使用 MysqL2 gem 构建和启动 Rails 6 容器。一切正常,但是当我启动 Rails 服务器时,出现错误

/usr/local/bundle/gems/activesupport-6.0.3.6/lib/active_support/dependencies.rb:324:in `require': libmariadb.so.3: cannot open shared object file: No such file or directory - /usr/local/bundle/gems/MysqL2-0.5.3/lib/MysqL2/MysqL2.so (LoadError)

我的 Dockerfile 的相关部分是我安装本机扩展的地方。我知道 MariaDB 也是一种选择,但我也尝试过,但遇到了同样的错误

apt-get update -qq && apt-get install -y git openssh-client build-essential pkg-config default-MysqL-client default-libMysqLclient-dev libsqlite3-dev ;\

我使用的是 MysqL2 (0.5.3) 和 Rails 6.0.3.6

大家有什么建议吗?我可能已经花了一个星期的时间,您的帮助将不胜感激。谢谢!

解决方法

我发现了这个问题。

在我的 Dockerfile 中,我有另一个 FROM 子句在我的 apt-get 安装之后。这样做会重置文件的范围,因此这些依赖项在 Rails 服务器运行时不可用。我删除了它,它起作用了。