Home > Enterprise >  Access env variables inside docker entrypoint script
Access env variables inside docker entrypoint script

Time:04-30

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.

CodePudding user response:

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

CodePudding user response:

you're docker command is correct but you should check in your system why it not work! also there's a better way for adding environment variables which is docker-compose , i really suggest you to use docker-compose, i think by passing your variable in environment variables of docker-compose you're problem will solve. if you don't know how you should configure docker-compose please check doc

docker-compose Environment variables doc

  • Related