Declare env variable which value include space for

2019-06-18 15:53发布

问题:

I have an env variable value like this:
TEST_VAR=The value

Do anybody knowns whether this is legal? should I place " around the value for this to be interpreted as needed in docker? Thanks

EDIT: Quotation marks will not be a good solution as it is will be part of the val see reference here.

回答1:

Lets see the result running the following compose file:

version: "3"

services:
    service:
        image: alpine
        command: env
        env_file: env.conf

env.conf:

TEST_VAR1=The value
TEST_VAR2="The value2"

docker-compose up Result:

service_1 | PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
service_1  | TEST_VAR2="The value2"
service_1  | TEST_VAR1=The value
service_1  | HOME=/root

Therefore, it is legal to have spaces in the env value.



回答2:

You can escape the space with a \:

TEST_VAR=The\ value

Edit: This is how I pass them when starting the container (i.e. docker run -e TEST_VAR=The\ value hello-world). If you're using docker-compose or an env file, see the answer by @yamenk.



回答3:

In Dockerfile use doublequotes, do not use singlequotes because they do not expand variables inside, excerp from passing buildargs/envs to dockerfile and into a python script below:

ARG HOST="welfare-dev testapi"
ENV HOST "${HOST}"
ARG SITENAME="Institusjon"
ENV SITENAME "${SITENAME}"
RUN cd ${TESTDIR}/sensiotools/sensiotools && cd test && \
  ./testapi-events.py --activate --sitename="${SITENAME}" --host="${HOST}" --dbcheck --debug --wait=0.5 && \
  ./testapi-events.py --deactivate --sitename="${SITENAME}" --host="${HOST}" --dbcheck --debug