代码之家  ›  专栏  ›  技术社区  ›  kovac

环境变量不是用docker在docker容器中设置的-合成.yml

  •  0
  • kovac  · 技术社区  · 8 年前

    我有一个 .env

    # DEV
    SALES_DB_HOST=xxx
    

    那么我有一个 docker-compose.yml 文件如下所示:

    version: "3.1"
    services:
      web:
        image: xxx
        build: .
        env_file: .env
    

    但是,在nodejs中访问环境变量的值如下所示 process.env.SALES_DB_HOST undefined .

    输出 docker-compose config 是:

    services:
      web:
        build:
          context: xxxxxxxx
        environment:
          SALES_DB_HOST: xxx
        image: xxxxx
    version: '3.1'
    

    所以,看起来像 码头工人-合成.yml process.env 没有正确获取该值?

    编辑:

    docker build -t my_image .

    2 回复  |  直到 8 年前
        1
  •  1
  •   Maxim Antonov    8 年前

    试试这样的方法:

    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
    
        2
  •  0
  •   Maxim Antonov    8 年前

    注意你的代码:

    process.env.process.env.SALES_DB_HOST
    

    过程.env.过程环境

    你应该用

    process.env.SALES_DB_HOST