gpt4 book ai didi

ruby-on-rails - 在 Docker 容器中加载共享库 libsqlite3.so.0 时出错

转载 作者:行者123 更新时间:2023-12-05 03:58:22 24 4
gpt4 key购买 nike

当我尝试从 Alpine Ruby 2.6.3 在 Docker 容器中构建 Rails 应用程序时,我得到了以下堆栈跟踪。

我已经尝试安装 sqlitesqlite-devsqlite-libs,因为没有 apk“libsqlite3”的包。

我是不是用错了方法?

LoadError: Error loading shared library libsqlite3.so.0: No such file or directory (needed by /usr/local/bundle/gems/sqlite3-1.3.13/lib/sqlite3/sqlite3_native.so) - /usr/local/bundle/gems/sqlite3-1.3.13/lib/sqlite3/sqlite3_native.so
/usr/local/bundle/gems/activesupport-5.0.7/lib/active_support/dependencies.rb:293:in `require'
/usr/local/bundle/gems/activesupport-5.0.7/lib/active_support/dependencies.rb:293:in `block in require'
/usr/local/bundle/gems/activesupport-5.0.7/lib/active_support/dependencies.rb:259:in `load_dependency'
/usr/local/bundle/gems/activesupport-5.0.7/lib/active_support/dependencies.rb:293:in `require'
/usr/local/bundle/gems/sqlite3-1.3.13/lib/sqlite3.rb:6:in `rescue in <top (required)>'
/usr/local/bundle/gems/sqlite3-1.3.13/lib/sqlite3.rb:2:in `<top (required)>'
/app/config/application.rb:7:in `<top (required)>'

这是我的 Dockerfile:

FROM ruby:2.6.4-alpine3.9

WORKDIR /app

ENV RAILS_ENV=production
ENV RAILS_SERVE_STATIC_FILES=true

EXPOSE 3000


####
# Setup ruby environment
####

COPY ./admin/Gemfile* ./admin/*.gemspec ./admin/
COPY ./admin/lib/admin/version.rb ./admin/lib/admin/

RUN apk add --no-cache --virtual=.build-deps \
git openssh-client build-base mariadb-dev sqlite-libs sqlite-dev sqlite \
#Installing bundler without versioning could break things.
&& gem install bundler --pre \
&& bundle install --without=development,test \
&& bundle config \
&& apk del .build-deps

COPY . ./

RUN bundle config && bundle \
&& rm -f config/database.yml \
&& DATABASE_URL=sqlite3:/tmp/assets_dummy.sqlite3 bundle exec rake assets:precompile

COPY entrypoint /usr/local/bin/entrypoint

最佳答案

动态库或共享对象(以 .so 结尾的文件)需要存在于系统中才能运行该程序。您的长 RUN 命令正在安装 sqlite-libs 并在 bundle install 阶段使用它,但随后又将其删除; sqlite gem 需要安装动态库。

我会在单独的 RUN 命令中安装它。由于开发包可能依赖于运行时库,我会先安装它以减少流失和下载时间(略微)。

RUN apk add --no-cache sqlite-libs
RUN apk add --no-cache --virtual=.build-deps \
git openssh-client build-base mariadb-dev sqlite-dev \
... \
&& apk del .build-deps

关于ruby-on-rails - 在 Docker 容器中加载共享库 libsqlite3.so.0 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58071977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com