【问题标题】:docker-compose : variables from .env not available in the servicedocker-compose:来自 .env 的变量在服务中不可用
【发布时间】:2021-07-02 00:41:09
【问题描述】:

我是 nodejs 新手,我不明白为什么环境变量并不总是可用。

.env 中的环境变量由 docker-compose 自动解析。所以我没有使用 dotenv 包。

console.log(process.env.API_URL) // outputs undefined

但是在异步函数中(也许它不适用于所有异步函数)

async function foo() {
    console.log(process.env.API_URL) // outputs http://example.com
}

在我的index.ts 中移动console.log 几种方式后,我找到了 env vars 可用的行:

// index.ts
import {createConnection} from 'typeorm'
console.log(process.env.API_URL) // outputs undefined
createConnection()
console.log(process.env.API_URL) // outputs http://example.com

知道为什么会这样吗?

编辑:

我正在使用这个 docker-compose.yml :

version: '3.7'
services:
  server:
    build:
      context: ./docker-build
      target: server-develop
    ports:
      - "3200:3000"
    volumes:
      - .:/var/app
    command: "yarn run dev"

Docker docs 似乎告诉.env 文件在未指定 env_file 时默认被解析。来自 docker 文档的屏幕截图:

但是,我在使用 docker-compose exec server env 时看不到环境变量。 但是,如果我在 docker-compose.yml 中指定 env_file(见下文),则正确加载了环境变量。

version: '3.7'
services:
  server:
    build:
      context: ./docker-build
      target: server-develop
    env_file: .env # the only change
    ports:
      - "3200:3000"
    volumes:
      - .:/var/app

也许我误解了 docker 说的是什么

默认加载.env文件

【问题讨论】:

    标签: node.js docker docker-compose environment-variables typeorm


    【解决方案1】:

    您可以从这里使用dotenv https://www.npmjs.com/package/dotenv

    您可能正在使用 nodemon,据我所知,它只加载 NODE_ENV 变量。通过使用dotenv,您可以:

    • 在您放置环境变量的根文件夹中创建一个新文件 .env
    • 尽早加载require('dotenv').config()

    您将在 npmjs 包页面本身上找到更多信息,例如更改启动命令以便它可以自动加载 .env 文件等等

    【讨论】:

    • 谢谢,但我希望 docker 引擎解析环境变量,并在 nodejs 启动之前在容器上可用。
    • Np。只需运行 docker 并提及文件 sudo docker run [...] --env-file ./my_env.list [...] 或在路径 services -> client-side-app -> environment -> MY_VAR = "my-var" 中的 docker-compose 文件中提及您的变量
    • 你说得对,但是我已经编辑了我的问题,以准确说明我对 docker env 解析的期望
    猜你喜欢
    • 2021-05-24
    • 2021-01-24
    • 1970-01-01
    • 2021-08-27
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 2019-02-12
    相关资源
    最近更新 更多