Nano Hash - криптовалюты, майнинг, программирование

Установленные драгоценные камни не найдены упаковщиком, когда BUNDLE_PATH изменен с помощью Docker

Я использую докер для разработки приложения для рельсов. Файл докера выглядит так:

FROM ruby:1.9.3

RUN apt-get update -qq && apt-get install -y build-essential libpq-dev vim

ENV APP_HOME /next-reg
RUN mkdir $APP_HOME
WORKDIR $APP_HOME

ENV BUNDLE_PATH /box

ADD . $APP_HOME

RUN gem install gem1.gem  gem2.gem

COPY Gemfile Gemfile
COPY Gemfile.lock Gemfile.lock

RUN  bundle install

Как видите, я изменил BUNDLE_PATH из-за статья, показывающая, как сохранить загрузку gem. Так что сверхурочно, когда кеш докера нагревается, он повторно связывается и занимает НАВСЕГДА.

Когда я docker build, он успешно устанавливает драгоценные камни, но не может найти их в комплекте. Может ли кто-нибудь помочь мне с постоянными драгоценными камнями, установить мои собственные драгоценные камни и заставить их работать?

До того, как я изменил BUNDLE_PATH, сборка работала, она просто часто переустанавливалась без изменений в файле гема (потому что, я думаю, кеш образа докера нагрелся).

Мой докер-композитор выглядит так:

db:
  image: postgres
  volumes:
    - ~/.docker-voumes/postgres/data:/var/lib/postgresql/data
# This is to hold and persist ruby gems, referenced in web and in web's dockerfile.
gem_files:
  image: busybox
  volumes:
    - /box

web:
  build: .
  command: bundle exec rails s -p 3000 -b '0.0.0.0'
  volumes:
    - .:/next-reg
  volumes_from: 
    - gem_files
  ports:
    - "3000:3000"
    - "8000:8000"
  links:
    - db
  env_file:
    - .myenv.env

  • Я думаю, что веб-сервис также должен знать о переменной окружения BUNDLE_PATH. 20.04.2016
  • попробуйте определить в Dockerfile команды последовательности WORKDIR и COPY ниже FROM 13.11.2020

Ответы:


1

Я думаю, что в вашем коде не хватает GEM_HOME/GEM_PATH.

GEM_HOME/GEM_PATH будет использоваться gem install xxx для установки gems в определенную папку. BUNDLE_PATH будет использоваться при установке пакета для установки драгоценных камней в определенную папку, но не при установке драгоценных камней xx

Чтобы иметь работающую систему, вы должны сделать:

FROM ruby:1.9.3

RUN apt-get update -qq && apt-get install -y build-essential libpq-dev vim
ENV APP_HOME /next-reg
RUN mkdir $APP_HOME
WORKDIR $APP_HOME

ENV BUNDLE_PATH /box
ENV GEM_PATH /box
ENV GEM_HOME /box

ADD . $APP_HOME

RUN gem install bundler
RUN gem install tzinfo -v 1.2.2

COPY Gemfile Gemfile

RUN  bundle install

С этим Gemfile:

source 'https://rubygems.org'

gem 'tzinfo', '1.2.2'

Который будет производить:

Step 11/13 : RUN gem install tzinfo -v 1.2.2
 ---> Running in 8a87fa54fa19
Successfully installed thread_safe-0.3.6
Successfully installed tzinfo-1.2.2
2 gems installed
 ---> 3c91d59bde8a
Removing intermediate container 8a87fa54fa19

Step 13/13 : RUN bundle install
 ---> Running in 20f1e4ec93b1
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and
installing your bundle as root will break this application for all non-root
users on this machine.
Fetching gem metadata from https://rubygems.org/...
Fetching version metadata from https://rubygems.org/.
Resolving dependencies...
Rubygems 1.8.23.2 is not threadsafe, so your gems will be installed one at a time. Upgrade to Rubygems 2.1.0 or higher to enable parallel gem installation.
Installing rake 12.0.0
Using thread_safe 0.3.6
Using bundler 1.14.6
Using tzinfo 1.2.2
Bundle complete! 2 Gemfile dependencies, 4 gems now installed.
Bundled gems are installed into /box.

Как видно из выходных данных, bundle install повторно использует предварительно загруженные драгоценные камни из gem install.

08.03.2017
  • Спасибо! Поэтому мне пришлось определить переменные: ENV GEM_PATH /xxx; ENV GEM_HOME /xxx вместе с ним. Как-нибудь попробую, спасибо! 16.05.2017
  • Это был правильный ответ на мою проблему. Я никогда не осознавал, что мне также нужно было установить путь к драгоценному камню! Спасибо! 19.01.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..