多个Docker从docker-compose .env文件构build参数

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

 |- root | |- .env | |- docker-compose.yaml | |- service-1 | |- Dockerfile 

.ENV:

 GIT_TOKEN=c3e13c4e33935 DB_PWD=mypassword 

泊坞窗,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 

服务-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 

问题是GIT_TOKENvariables工作正常,但DB_PWDvariables不是。 即使将GIT_TOKENvariables放在回显行中,令牌也会保存到一个文件中(所以我知道这不是一个回声/ bash插值问题)任何帮助,非常感谢。 我已经阅读了所有我能find的与Docker环境variables相关的东西。

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

参考文献:

  • .env文件
  • ARG
  • 类似的例子,但设置容器环境variables
  • 因为.env和env_file太混乱了,所以引发了一个错误的问题
  • 结合ARG和ENV

我真的想坚持到Docker生成参数,而不是环境variables,以便值不存储在容器的环境variables。

Facepalm🤦♀️ – 这是完美的工作。 我在我docker-compose.yaml文件中将错误的服务放在了- DB_PWD=$DB_PWD参数中。 我将在这里留下这个作为一个参考如何使用.env构build参数.env文件 – 并提醒我自己,我是一个白痴。 我很尴尬 – 100个SOF声望