Declare env variable which value include space for docker/docker-compose

烂漫一生 提交于 2019-12-19 16:14:04

问题


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


来源:https://stackoverflow.com/questions/46141148/declare-env-variable-which-value-include-space-for-docker-docker-compose

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!