I want to access the value of one of environment
variable in my dockerfile
, and pass it as first argument
to the main script
in docker ENTRYPOINT
.
I came across this so link which shows two ways to do it. one with exec form
and one with shell form
.
The exec form
worked fine to echo the environment variable with ["sh", "-c", "echo $VARIABLE"]
but when I tried with my custom entrypoint script ENTRYPOINT ["/bin/customentrypoint.sh", "$VARIABLE"]
it is not able to get the value for variable, instead its just taking it as constant $VARIABLE
.
So I went with shell form
approach and just called ENTRYPOINT /bin/customentrypoing "$VARIABLE"
, and it worked fine to get the value of $VARIABLE
but It seems that its restricting the no of command line arguments in this case. as I am getting only one value of $@
even after passing other command line arguments from docker run
.Can someone please help me if I am doing something wrong , or I should tackle this in different way.Thanks in Advance.
docker looks is similar to
#!/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 arguments
# ENTRYPOINT ["bin/customentrypoint", "$VARIABLE"] # not able to get value of $VARIABLE instead taking as constant.
command I am using
docker run --rm -v $PWD:/mnt -e VARIABLE=VALUE docker_image:tag entrypoint -d /mnt/tmp -i /mnt/input_file