【发布时间】:2018-05-07 03:46:54
【问题描述】:
我在使用 docker-compose 的 .env 文件时遇到了一个奇怪的问题。我可以在我的 .env 文件中使用第一个变量 key=pair,但只能使用第一个变量。这是我的文件夹结构
|- root
| |- .env
| |- docker-compose.yaml
| |- service-1
| |- Dockerfile
.env:
GIT_TOKEN=c3e13c4e33935
DB_PWD=mypassword
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
service-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_TOKEN 变量工作正常,但 DB_PWD 变量却不行。即使将 GIT_TOKEN 变量放在 echo 行中,令牌也会保存到文件中(所以我知道这不是 echo/bash 插值问题)非常感谢任何帮助。我已经阅读了所有与 Docker 环境变量相关的内容。
注意:我修改了一些内容。我的数据库密码不是 mypassword,也不是真正的 git repo
参考文献:
- .env file
- ARG
- Similar example but setting container environment variables
- False issue raised because .env and env_file is so confusing
- combine ARG and ENV
我真的很想坚持使用 Docker 构建参数而不是环境变量,这样这些值就不会存储在容器的环境变量中。
【问题讨论】:
标签: docker environment-variables docker-compose dockerfile