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

sdc*_*sdc 9 environment-variables docker dockerfile docker-compose

我遇到了 docker-compose.env文件的一个奇怪问题。我可以在 .env 文件中使用第一个变量 key=pair,但只能使用第一个变量。这是我的文件夹结构

|- root
|  |- .env
|  |- docker-compose.yaml
|  |- service-1
|     |- Dockerfile
Run Code Online (Sandbox Code Playgroud)

.env:

GIT_TOKEN=c3e13c4e33935
DB_PWD=mypassword
Run Code Online (Sandbox Code Playgroud)

docker-compose.yaml:

version: '3'
web-server:
      container_name: service-1
      image: sdc/service-1:0.1
      build:
        context: ./service-1
        args:
          - GIT_TOKEN=$GIT_TOKEN
          - DB_PWD=$DB_PWD
Run Code Online (Sandbox Code Playgroud)

服务 1/Dockerfile:

FROM node:boron
ARG GIT_TOKEN
ARG DB_PWD
RUN git clone https://${GIT_TOKEN}@github.com/chrxn/sdc.git
RUN echo {"database_password:" $DB_PWD } > crews.txt
Run Code Online (Sandbox Code Playgroud)

问题是 GIT_TOKEN 变量工作正常,但 DB_PWD 变量不是。即使将 GIT_TOKEN 变量放在 echo 行中,令牌也会保存到文件中(所以我知道这不是 echo/bash 插值问题)非常感谢任何帮助。我已经阅读了所有我能找到的与 Docker 环境变量相关的内容。

注意:我修改了一些东西。我的数据库密码不是 mypassword,也不是真正的 git repo

参考:

我真的很想坚持使用 Docker 构建参数而不是环境变量,这样这些值就不会存储在容器的环境变量中。

sdc*_*sdc 22

脸谱???- 这是完美的工作。我- DB_PWD=$DB_PWD在我的docker-compose.yaml文件中将参数放在错误的服务下。我将把它留在这里作为关于如何使用.env带有 docker 构建参数的文件的参考——并提醒我自己,我是一个白痴。我很尴尬--100 SOF声望

  • 我们如何使用文件中的args? (2认同)