[英]Environment variables are not set in docker container using docker-compose.yml
I have a .env
file like below: 我有一个.env
文件,如下所示:
# DEV
SALES_DB_HOST=xxx
Then I have a docker-compose.yml
file that looks like: 然后我有一个docker-compose.yml
文件,看起来像:
version: "3.1"
services:
web:
image: xxx
build: .
env_file: .env
However, the values for the environment variables when accessed in nodejs like process.env.SALES_DB_HOST
it prints undefined
. 但是,当在诸如process.env.SALES_DB_HOST
之类的nodejs中访问时,环境变量的值将显示undefined
。
Output of docker-compose config
is: docker-compose config
输出为:
services:
web:
build:
context: xxxxxxxx
environment:
SALES_DB_HOST: xxx
image: xxxxx
version: '3.1'
So, it looks like docker-compose.yml
is formed correctly. 因此,看起来docker-compose.yml
正确。 But why is process.env
not getting this value correctly? 但是为什么process.env
无法正确获得此值?
EDIT: 编辑:
I build the docker image with: docker build -t my_image .
我使用以下命令docker build -t my_image .
映像: docker build -t my_image .
Can you change command on you container configuration in yml file. 您可以在yml文件中的容器配置上更改命令吗? You should try to test your environment to understand - where is a problem. 您应该尝试测试您的环境以了解-问题出在哪里。 In docker or in your code. 在docker或您的代码中。
Try something like this: 尝试这样的事情:
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
It's not a docker problem. 这不是docker问题。 Look to your code: 查看您的代码:
process.env.process.env.SALES_DB_HOST
It's typo. 是错字 process.env.process.env process.env.process.env
You shold use 您搁置使用
process.env.SALES_DB_HOST
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.