Docker-compose env var无法正常工作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker-compose env var无法正常工作相关的知识,希望对你有一定的参考价值。

我试图在我的docker compose文件中设置env var但是var似乎没有传播到我的docker。

我的码头组成:

test:
  build: ./
  environment:
    TESTVAR: "YOU ARE BEST"

我的dockerfile:

FROM alpine

RUN echo test variable is: $TESTVAR

输出:

Step 1/2 : FROM alpine
 ---> 3fd9065eaf02
Step 2/2 : RUN echo test variable is $TESTVAR
 ---> Running in d5f5505b26db
test variable is
Removing intermediate container d5f5505b26db
 ---> a9c019ac7eff
Successfully built a9c019ac7eff
Successfully tagged phpfpm_test:latest
Recreating phpfpm_test_1 ... done
Attaching to phpfpm_test_1

我错过了什么吗?

答案

注意:如果您的服务指定了构建选项,则在构建期间,环境中定义的变量不会自动显示。使用build的args子选项来定义构建时环境变量。 - from docker docs

所以你可以使用参数(args)而不是环境(environment):

Docker Compose(v2或v3):

version: '2'  # or 3
services:
  test:
    build: 
      context: ./
    args:
      TESTVAR: 'YOU ARE BEST'

Dockerfile:

FROM alpine
ARG TESTVAR

RUN echo "test variable is: $TESTVAR"

要求:

  • Docker撰写:1.6.0+
  • Docker Engine:1.10.0+

注意:您需要在ARG TESTVAR之后定义参数(FROM)以使用docker-compose文件(more info on StackOverflow)上指定的值。

以上是关于Docker-compose env var无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

如何从.env文件获取环境变量到docker-compose.yml?

在 docker-compose 的 .env 文件中使用多行值

无法使用 process.env 变量连接到数据库,但 process.env vars 在日志中打印

VueJS 和 Webpack:构建项目无法访问 ENV var

来自 docker-compose .env 文件的多个 Docker 构建参数

docker-compose .env 与 direnv .envrc