我有一个如下所示的 .env
文件:
# DEV
SALES_DB_HOST=xxx
然后我有一个 docker-compose.yml
文件,如下所示:
version: "3.1"
services:
web:
image: xxx
build: .
env_file: .env
但是,在像 process.env.SALES_DB_HOST
这样的 nodejs 中访问环境变量的值时,它会打印 undefined
。
docker-compose config
的输出是:
services:
web:
build:
context: xxxxxxxx
environment:
SALES_DB_HOST: xxx
image: xxxxx
version: '3.1'
所以,看起来 docker-compose.yml
的格式是正确的。但是为什么 process.env
没有正确获取这个值?
编辑:
我使用以下命令构建 docker 镜像:docker build -t my_image .
最佳答案
您可以更改 yml 文件中容器配置的命令吗? 您应该尝试测试您的环境以了解 - 问题出在哪里。在 docker 中或在您的代码中。
尝试这样的事情:
maxantonov : ~/passbolt .$ cat dc.yml
version: '3.4'
services:
db:
image: alpine:latest
container_name: db
hostname: db
env_file:
- env/mysql.env
command: ["printenv"]
maxantonov : ~/passbolt .$ docker-compose -f dc.yml up
Starting db ... done
Attaching to db
db | PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
db | HOSTNAME=db
db | MYSQL_ROOT_PASSWORD=test
db | MYSQL_DATABASE=passbolt
db | MYSQL_USER=passbolt
db | MYSQL_PASSWORD=P4ssb0lt
db | HOME=/root
db exited with code 0
关于docker - 使用 docker-compose.yml 未在 docker 容器中设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50757262/