Я пытаюсь докернизировать свое приложение rails 6 и продолжаю преодолевать контрольно-пропускные пункты, которые не имеют смысла для меня. Ошибки кажутся довольно простыми для понимания, но все исправления, которые я пытаюсь решить, устраняют проблему.
Вот ошибка, которую я получаю после выполнения следующих команд:
$ docker-compose up
/usr/local/bundle/gems/activesupport-6.0.2.1/lib/active_support/dependencies.rb:325:in `require': libc.musl-x86_64.so.1: cannot open shared object file: No such file or directory - /usr/local/bundle/gems/ffi-1.12.2/lib/ffi_c.so (LoadError)
Я не получаю любые ошибки до запуска контейнера app
. Эта ошибка кажется довольно простой, поэтому, если я добавлю gem 'ffi'
к моему Gemfile
in, все равно получаю ту же ошибку после запуска:
$ bundle install
$ docker-compose up --build
Мой Gemfile в значительной степени стандартен:
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby '2.6.3'
gem 'rails', '~> 6.0.2', '>= 6.0.2.1'
gem 'pg', '~> 1.1.2'
gem 'puma', '~> 4.1'
gem 'sass-rails', '>= 6'
gem 'webpacker', '~> 4.0'
gem 'turbolinks', '~> 5'
gem 'jbuilder', '~> 2.7'
gem 'devise'
gem 'image_processing', '~> 1.2'
group :development, :test do
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end
group :development do
gem 'web-console', '>= 3.3.0'
gem 'listen', '>= 3.0.5', '< 3.2'
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
end
group :test do
gem 'capybara', '>= 2.15'
gem 'selenium-webdriver'
gem 'webdrivers'
end
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
Мой Dockerfile выглядит так:
FROM ruby:2.6.3
# nodejs
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg -o /root/yarn-pubkey.gpg && apt-key add /root/yarn-pubkey.gpg
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list
RUN apt-get update && apt-get install -y --no-install-recommends build-essential nodejs yarn imagemagick libpq-dev
ENV APP_HOME /app
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME
# rails
RUN gem install bundler
ADD Gemfile* $APP_HOME/
RUN bundle install
ADD . $APP_HOME
RUN yarn install --check-files
CMD ["rails","server","-b","0.0.0.0"]
и docker-compose.yml
:
version: '3'
services:
app:
build:
context: .
dockerfile: Dockerfile
depends_on:
- db
ports:
- "3000:3000"
volumes:
- .:/app
- node_modules:/app/node_modules
- gem_cache:/usr/local/bundle/gems
environment:
RAILS_ENV: development
db:
image: postgres
ports:
- "5432:5432"
volumes:
- db_data:/var/lib/postgresql/data
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
volumes:
gem_cache:
node_modules:
db_data:
Чего здесь не хватает?