Docker容器中的命令行无法访问环境变量

问题描述 投票:0回答:2

我有一个运行 alpine 镜像的 docker 容器。我想运行一个curl 命令,该命令利用存储在环境变量TEST_VAR 中的cookie。 我似乎不知道如何使用环境变量运行这个curl命令,我不断收到消息“未设置TEST_VAR变量。默认为空白字符串。”如果我查看alpine的变量容器能够加载,我可以看到 TEST_VAR 及其值,但似乎curl 命令无法使用/读取它..我该如何解决这个问题?

Docker 撰写文件:

services:
  alpine_test:
    image: alpine:latest
    container_name: alpine_test
    env_file:
      - default.env
    command: /bin/sh -c "apk add --no-cache curl && \
                        curl -b 'value=$TEST_VAR' https://website.com"
    restart: "on-failure"

使用 default.env 中的变量:

TEST_VAR=thisisatestvariable
docker curl docker-compose alpine-linux
2个回答
0
投票

在 Dockerfile 中,要使用 .env 文件中的环境变量,您应该使用语法

${VARIABLE_NAME}


0
投票

Docker Compose 将使用主机自己的环境处理 compose 文件中的所有变量。

$$ 是将 $ 传递到容器的必要转义:

services:
  test:
    image: alpine
    environment:
      FOO: "container"
    command: [ "sh", "-c", "echo $FOO; echo $$FOO" ]

FOO=host docker compose run test

© www.soinside.com 2019 - 2024. All rights reserved.