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

Jav*_*aSa 9 docker docker-compose

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

有谁知道这是否合法?我应该"在码头工具中根据需要放置这个值吗?谢谢

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

yam*_*enk 10

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

version: "3"

services:
    service:
        image: alpine
        command: env
        env_file: env.conf
Run Code Online (Sandbox Code Playgroud)

env.conf:

TEST_VAR1=The value
TEST_VAR2="The value2"
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

  • 我的意思是docker env文件中的值,而不是docker-compose文件环境部分 (3认同)
  • 根据我的经验@void.pointer,它在 docker-compose.yml 中不起作用 (2认同)

ric*_*aan 7

你可以通过以下方式逃离空间\:

TEST_VAR=The\ value
Run Code Online (Sandbox Code Playgroud)

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

  • 这对我有用;所以,我不确定其他评论员在谈论什么!-- 其他答案完全是无稽之谈,与“dockerfile”无关。 (2认同)

Mor*_*enB 5

在 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
Run Code Online (Sandbox Code Playgroud)