Вы не указываете версию пакетов, которые вы хотите установить с apt-get install
.В результате вы застряли с любой доступной версией для тех пакетов для используемого вами дистрибутива.
В этом случае вы думаете, что устанавливаете Ruby 2.1.5, но 16.04 у вас 'вы на самом деле устанавливаете Ruby 2.3.0 и 18.04 вы устанавливаете Ruby 2.5.1 .Ваша команда RUN
включает ruby -v
, поэтому проверьте журналы сборки, чтобы убедиться, что вы не получаете ожидаемую версию.
Также убедитесь, что gem install rubyzip -v 1.2.2
работает как команда RUN
, что rubyzip
определен в вашем Gemfile, а правильная версия определена в Gemfile.lock, и что на что бы ни указывал упаковщик gem-сервера, он имеет копию gem в этой версии.
Далее вы пытаетесьиспользуйте Rails 4.2.6, но Rails 4.2.6 не совместим с Ruby 2.5.1.Это не совместимо с 2.4 либо.Первая версия Rails 4 для поддержки Ruby 2.4 была 4.2.8rc1 , а текущая версия Rails 4 - 4.2.10 .
. Убедитесь, что вы устанавливаетеправильные версии пакетов, которые вам нужны, и что ваши приложения и библиотеки используют совместимые версии.Кроме того, рассмотрите возможность обновления вашей версии Ruby, так как поддержка Ruby 2.1 закончилась .(и это закончилось более года назад)
Наконец, рассмотрите возможность использования образа Docker, в котором уже есть Ruby, вместо установки Ruby через apt-get
.Например, 2.3-stretch
image дает вам растяжку Debian с последней версией Ruby 2.3. Другие версии также доступны .Преимущество использования одного из этих Dockerfiles заключается в том, что вы точно знаете, какую версию Ruby вы получаете, и она не меняется.