简体   繁体   English

未使用docker-compose.yml在Docker容器中设置环境变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM