I am trying to dereference the value of environment variable using parameter expansion
[email protected], but it doesn’t seem to work.
I need to call a shell script with certain arguments. The list of arguments contain environment variables, and the environment variables are expected to be present where the shell script is to be executed. I do not know the list of commands before hand, so I am expanding those list of commands using
[email protected]. However, the script is not able to de-reference the value of environment variables.
A minimal setup which explains my problem can be done as below.
FROM alpine:3.10 ENV MY_VAR=production WORKDIR /app COPY run.sh . ENTRYPOINT [ "sh", "run.sh" ]
#!/bin/sh echo "Value of MY_VAR is" $MY_VAR echo "Begin" [email protected] echo "Done"
I can build the image using
docker build . -t env-test. When I run it using
docker run env-test:latest 'echo $MY_VAR', I get the below output.
Value of MY_VAR is production Begin $MY_VAR Done
While the output that I am expecting is:
Value of MY_VAR is production Begin production Done
SideNote: In actuality I am trying to run it using a compose file like below:
version: '3' services: run: image: env-test:latest command: echo $$MY_VAR
but it again gives me the similar result.