Эта простая техника работает для меня:
FROM node:9
# ...
ENTRYPOINT dkr2g run "$dkr2g_run_args"
затем мы запускаем контейнер с:
docker run \
-e dkr2g_run_args="$run_args" \
--name "$container_name" "$tag_name"
могут быть некоторые проблемы с пограничным случаем с распространением переменной env на аргументы командной строки, но по большей части должно работать.
ENTRYPOINT может работать так:
ENTRYPOINT ["foo", "--bar", "$baz"] # $baz will not be interpreted
или так:
ENTRYPOINT foo --bar $baz
не уверен, почему последнее не является предпочтительным, но интерполяция/интерпретация переменных env возможна только с использованием последнего. См.: Как использовать переменную среды Docker в массиве ENTRYPOINT. ?
Однако более надежным способом передачи аргументов является использование $@
вместо переменной env. Итак, что вам нужно сделать, это переопределить --entrypoint с помощью команды docker run
, например:
docker run --entrypoint="foo" <tag> --bar $@
Чтобы узнать правильный синтаксис того, как правильно переопределить точку входа, вы должны посмотреть это, чтобы быть уверенным, но в целом это странно - вы должны поставить --entrypoint="foo"
перед именем тега и аргументами для --entrypoint
, после имени тега. странный.
person
Alexander Mills
schedule
19.06.2018