Docker-compose env var 不起作用

Jan*_*sky 2 docker docker-compose

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

我的码头工人组成:

test:
  build: ./
  environment:
    TESTVAR: "YOU ARE BEST"
Run Code Online (Sandbox Code Playgroud)

我的码头档案:

FROM alpine

RUN echo test variable is: $TESTVAR
Run Code Online (Sandbox Code Playgroud)

输出:

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

我错过了什么吗?

Seb*_*sch 5

注意:如果您的服务指定了构建选项,则环境中定义的变量在构建过程中不会自动可见。使用argsbuild的子选项来定义构建时环境变量。-来自 docker 文档

因此,您可以使用参数 ( args) 而不是环境 ( environment):

Docker Compose(v2 或 v3)

version: '2'  # or 3
services:
  test:
    build: 
      context: ./
    args:
      TESTVAR: 'YOU ARE BEST'
Run Code Online (Sandbox Code Playgroud)

Dockerfile

FROM alpine
ARG TESTVAR

RUN echo "test variable is: $TESTVAR"
Run Code Online (Sandbox Code Playgroud)

要求:

  • Docker 撰写:1.6.0+
  • Docker 引擎:1.10.0+

注意:您需要在 之后定义参数 ( ARG TESTVAR)FROM以使用在 docker-compose 文件中指定的值(有关 StackOverflow 的更多信息)。