Dockerfile для приложения Ruby - почему WORKDIR указан как / usr / src / app - PullRequest
0 голосов
/ 14 февраля 2019

Глядя на официальную страницу Docker с изображениями Ruby - пример показывает установку WORKDIR /usr/src/app.

Кто-нибудь знает, почему этот конкретный путь?

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

Просто хочу убедиться, что нет проблем с его удалением.В противном случае я проверил свое изображение, и оно работает как положено.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Проект документации Linux говорит об этом: / usr / src

/ usr - это общедоступные данные только для чтения.

Большие программные пакеты не должныиспользуйте прямой подкаталог в иерархии / usr

Подкаталог 'linux' содержит исходные коды ядра Linux, файлы заголовков и документацию.

Я не уверен, почему онииспользовал этот каталог, и это, вероятно, не вредно, но это также не обязательно лучшее место для приложения Ruby / Rails.В то же время местоположение, которое вы размещаете, не имеет значения полностью , но вы, вероятно, хотите соблюдать некоторые правила:

  • Избегайте использования папки ~ (home),Это может вызвать проблемы, если у вас есть библиотеки, которые по умолчанию устанавливаются в home, тогда вы пытаетесь смонтировать этот каталог, и он перезаписывает вещи.Кроме того, вы можете получить артефакты (.bash_profile, .config / и т. Д.), Которые вам не нужны
  • Избегайте фактических / (root), чтобы не рисковать перезаписью системного каталога.

Создание каталога /app - наиболее распространенный шаблон, который я видел.В некоторых инструментах CI / CD вы увидите, что ваши данные помещаются в папку /app, поэтому я пытаюсь использовать ее для своих файлов Dockerfiles

0 голосов
/ 14 февраля 2019

В /usr/src/app нет ничего особенного.Он находится в стандартном дереве каталогов, но там нет ничего предустановленного, и это никак не влияет на интерпретатор или контейнер.Я бы не моргнул дважды, если бы вместо этого увидел WORKDIR /app или другой каталог.

Можно ли просто иметь мое приложение в корневом каталоге

Это было бынемного странноНекоторые каталоги имеют особое значение, и хотя в большинстве приложений Ruby для подкаталогов IME нет подкаталогов с именами proc или sys или lost+found, в противном случае это может привести к конфликту.Каталог lib является довольно распространенным, и у вас будут по крайней мере необычные совпадения.

Настройка some WORKDIR в основном универсальна в Dockerfiles приложений, и естьнет особой причины не использовать его.Пример Dockerfile в разделе «Как использовать это изображение» по ссылке в вашем вопросе на самом деле будет очень типичным.

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