声明env变量哪个值包含docker / docker-compose的空间

问题描述 投票:6回答:3

我有一个像这样的env变量值: TEST_VAR=The value

有谁知道这是否合法?我应该将"放在这个值的周围,以便在docker中根据需要进行解释吗?谢谢

编辑:引号将不是一个很好的解决方案,因为它将成为val的一部分参见here

docker docker-compose
3个回答
8
投票

让我们看看运行以下撰写文件的结果:

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结果:

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

因此,在env值中包含空格是合法的。


6
投票

你可以用\逃离这个空间:

TEST_VAR=The\ value

编辑:这是我在启动容器时传递它们的方式(即docker run -e TEST_VAR=The\ value hello-world)。如果您使用的是docker-compose或env文件,请参阅the answer by @yamenk


0
投票

在Dockerfile中使用双引号,不要使用单引号,因为它们不扩展变量,摘自传递buildargs / envs到dockerfile并进入下面的python脚本:

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
© www.soinside.com 2019 - 2024. All rights reserved.