'Access env variables inside docker entrypoint script
I want to pass environment variables in my docker run command and access them in my entrypoint shell script.
This is my super simple Dockerfile for test purposes:
FROM ubuntu:20.04
WORKDIR /
ADD entrypoint.sh .
RUN chmod 755 entrypoint.sh
ENTRYPOINT [ "/entrypoint.sh" ]
And this is the entrypoint.sh:
#!/bin/sh
printf "env var TEST = ${TEST} "
I just build the Dockerfile like this: docker build -t test:1.0 .
And then run it like this: docker run -i test:1.0 -e TEST='Hello world'
Unfortunately the output is not containing the env var.
Solution 1:[1]
For the record: Predefining the variables is not the solution.
The order of the args is important, like David Maze said.
# incorrect
docker run -i test:1.0 -e TEST='Hello world'
# correct
docker run -i -e TEST='Hello world' test:1.0
Solution 2:[2]
Something like this will work:
entrypoint.sh
#!/bin/sh
echo $MYVAR
Dockerfile
FROM alpine:3.15.4
WORKDIR /home/app
COPY ./entrypoint.sh .
ENV MYVAR=""
ENTRYPOINT ["/bin/sh", "/home/app/entrypoint.sh"]
And then you can build & run the container while setting the environment variable with:
$ docker build -t test . && docker run -e MYVAR="hello world" test
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | akop |
| Solution 2 | desertnaut |
