Я создал контейнер докеров, используя следующий файл Dockerfile (усеченный):
FROM ubuntu:12.04
# curl enables downloading of other things
RUN apt-get install curl -y
# download and install rvm...
RUN \curl -L https://get.rvm.io | bash -s stable
# ... so that we can install ruby
RUN /bin/bash -l -c "rvm requirements"
И так далее.
Все это работает, но проблема заключается в том, как/где пакеты установлены.
Если я просто запускаю rvm с помощью docker run [...] rvm
, я получаю "Невозможно найти rvm", но если я запустил docker run [...] /bin/bash -l -c "rvm"
, он будет работать. (Я нашел варианты "-l -c" онлайн, но понятия не имею, что они делают, и не может найти удовлетворительного объяснения того, что я делаю!)
Это не вопрос докера - это вопрос bash/* nix - я предполагаю, что там что-то о том, как/где все установлено, возможно, связано с запуском установки под root?
Просто, чтобы быть ясным - я хочу, чтобы иметь возможность запускать то, что я устанавливаю прямо из CLI.
РЕДАКТИРОВАТЬ 1
Установка Ruby с использованием rvm является рекомендуемым методом, однако, если вы хотите запускать вещи в неинтерактивной оболочке без входа (т.е. в контейнер докеров), это просто вызывает слишком много хлопот с помощью путей и переменных среды и входа скрипты не работают.
Учитывая, что я использую это для запуска контейнера докеров, который по определению изолирован и восстанавливается (просто создайте еще один), мне все равно не нужно переключать версии или изолировать пакеты, и поэтому я решил вместо этого установите Ruby из пакета repo (http://brightbox.com/docs/ruby/ubuntu/). Это "просто работает".
Это может не сработать для вас - я только устанавливаю Ruby, чтобы получить драгоценный камень Foreman, поскольку я запускаю приложение через Procfile, поэтому я не беспокоюсь о деталях, мне просто нужно, чтобы он работал, Если вы создаете приложение Ruby, я не буду следовать моему совету.
My Dockerfile здесь, FWIW, https://index.docker.io/u/yunojuno/dev/