Я хочу получить доступ к значению одной из переменных environment
в моем dockerfile
и передать его как первый argument
в main script
в docker ENTRYPOINT
.
I наткнулся на эту ссылку , которая показывает два способа сделать это. один с exec form
и один с shell form
.
exec form
работал нормально, отображая переменную окружения с ["sh", "-c", "echo $VARIABLE"]
, но когда я попытался с помощью моего собственного сценария точки входа ENTRYPOINT ["/bin/customentrypoint.sh", "$VARIABLE"]
, он не смог получить значение для переменной, вместо этого просто взять его как константу $VARIABLE
.
Так что я пошел с shell form
подходом и просто назвал ENTRYPOINT /bin/customentrypoing "$VARIABLE"
, и он работал нормально, чтобы получить значение $VARIABLE
но похоже, что это ограничивает количество аргументов командной строки в этом случае. так как я получаю только одно значение $@
даже после передачи других аргументов командной строки от docker run
. Может кто-то помочь мне, если я делаю что-то не так, или я должен решить эту проблему по-другому. Заранее спасибо.
docker выглядит аналогично команде
#!/usr/bin/env bash
...
ENV VARIABLE NO
...
RUN echo "#!/bin/bash" > /bin/customentrypoint.sh
RUN echo "if [ "\"\$1\"" = 'YES' ] ; then ; python ${LOCATION}/main.py" \"\$@\" "; else ; echo Please select -e VARIABLE=YES ; fi" >> /bin/customentrypoint.sh
RUN chmod +x /bin/customentrypoint.sh
RUN ln -s -T /bin/customentrypoint.sh /bin/customentrypoint
WORKDIR ${LOCATION}
ENTRYPOINT /bin/customentrypoint "$VARIABLE" # - works fine but limits no of command line arguements
# ENTRYPOINT ["bin/customentrypoint", "$VARIABLE"] # not able to get value of $VARIABLE instead taking as constant.
, которую я использую
docker run --rm -v $PWD:/mnt -e VARIABLE=VALUE docker_image:tag entrypoint -d /mnt/tmp -i /mnt/input_file