Проблема с тем, чтобы сделать ruby ​​доступным для образа Debian9 - PullRequest
0 голосов
/ 21 июня 2019

Я следовал этим инструкциям по установке ruby на debian9 образе (мне нужна более старая версия ruby, а именно 2.1.5)

У меня также естьвключил дополнительный шаг, чтобы сделать его доступным при входе в систему для всех пользователей, т.е.

echo "source /etc/profile.d/rvm.sh >> /etc/profile"

Так что теперь, когда я запускаю свой контейнер после входа в терминал, ruby доступно:

$ docker run -ti registry/container:tag bash
root@f6805551226c:/# ruby -v
ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux]

Однако, когда я запускаю свой контейнер без явного входа в систему, ruby недоступен, очевидно, потому что файл не получен

docker run -it registry/container:tag ruby -v
docker: Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused "exec: \"ruby\": executable file not found in $PATH": unknown.

Как я могу решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

Проверьте, можете ли вы решить эти проблемы, используя инструкцию ENV и задав переменную PATH самостоятельно. Это сработало для меня в этом вопросе: Почему докер-чентос не распознает пипс? и в качестве практики это также упоминается в документации Docker:

Рекомендации по написанию Dockerfiles

ENV

Чтобы упростить запуск нового программного обеспечения, вы можете использовать ENV, чтобы обновить переменную среды PATH для программного обеспечения, устанавливаемого вашим контейнером. Например, ENV PATH /usr/local/nginx/bin:$PATH гарантирует, что CMD ["nginx"] просто работает.

0 голосов
/ 21 июня 2019

/etc/profile просто работает, когда пользователь входит в оболочку:

docker run -it registry/container:tag ruby -v просто установит ruby -v в качестве PID1 контейнера, а не shell в качестве PID1контейнер, поэтому /etc/profile не будет работать.

Только следующий, который будет работать:

docker run -it registry/container:tag bash -c "ruby -v"

Когда вы используете docker run -ti registry/container:tag bash, PID1 будет bash, поэтому /etc/profile будетсделать эффект, так что вы можете иметь рубин в пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...