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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了声明env变量哪个值包含docker / docker-compose的空间相关的知识,希望对你有一定的参考价值。

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

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

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

答案

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

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值中包含空格是合法的。

另一答案

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

TEST_VAR=The\ value

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

另一答案

在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

以上是关于声明env变量哪个值包含docker / docker-compose的空间的主要内容,如果未能解决你的问题,请参考以下文章

Docker Compose mysql 环境变量与 Application .env 数据库变量。很困惑

如何持久化docker中的环境变量

Laradock入门

Node环境变量Process.env

怎样获取docker容器的环境变量

vue项目环境变量配置的实现方法