WedX - журнал о программировании и компьютерных науках

Передать аргумент в dockerfile @ runtime

В основном хотите иметь возможность запускать контейнер докеров с указанными аргументами.

докерфайл:

FROM nodesource/node:4.0

ADD package.json package.json
RUN npm install
ADD . .

ENTRYPOINT ["node","index.js"]

По сути, я запускаю учебный код, найденный для rabbitMQ: https://www.rabbitmq.com/tutorials/tutorial-one-javascript.html

Единственная разница в том, что вместо жестко заданного имени очереди я использую для него $args.

var argv = require('minimist')(process.argv.slice(2));
var q = argv.que;

строка cmd, как я запускаю свои nodejs: node index.js --que 1

и работает нормально. однако при выполнении из docker run он, похоже, не работает (аргументы не читаются правильно)

я пытался:

docker run -it mydockerimage --que (my queue name)

но получаю ошибку:

Ответ об ошибке от демона: ошибка времени выполнения oci: exec: "--que": исполняемый файл не найден в $PATH.

Как мне правильно написать этот образ докера, чтобы я мог передавать аргументы во время выполнения?

Я знаю, что могу сделать это, переопределив --entrypoint, но в идеале я хотел бы печатать меньше... возможно ли это вообще?


  • Почему бы не сделать его частью окружающей среды? Затем вы можете установить значение по умолчанию в Dockerfile или передать его с помощью -e. 27.07.2016
  • Вы уверены, что ваш образ имеет указанную выше точку входа, а не cmd? Свяжитесь с docker inspect mydockerimage. 27.07.2016
  • @BMitch да, конечно, потому что, если я пройду ENTRYPOINT ["node","index.js", "--que", "1"], все будет хорошо 27.07.2016
  • Передача полного списка в CMD также будет работать нормально, но с такой установкой ENTRYPOINT вы не должны видеть ошибку --que file not found. 28.07.2016

Ответы:


1

Комбинация ENTRYPOINT и CMD позволяет вам указать исполняемый файл по умолчанию для вашего образа, а также предоставить аргументы по умолчанию для этого исполняемого файла, которые могут быть переопределены пользователем.

FROM nodesource/node:4.0

ADD package.json package.json
RUN npm install
ADD . .

ENTRYPOINT ["node","index.js"]
CMD ["--que","1"]

Итак, поведение по умолчанию docker run будет заключаться в отправке аргумента --que 1

docker run -it mydockerimage

Но вы можете переопределить это значение

docker run -it mydockerimage --que 2
27.07.2016
Новые материалы

Как создать диаграмму градиентной кисти с помощью D3.js
Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

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

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


Для любых предложений по сайту: [email protected]