无法访问云 运行 服务器中的 ENV 变量

ENV variables within cloud run server are no accessible

所以,

  1. 我正在使用 NUXT
  2. 我正在部署到 google 云 运行
  3. 我在开发中使用带有 .env 文件的 dotenv 包,它工作正常。

我在 Nuxt 上的开发服务器中使用命令 process.env.VARIABLE_NAME,它运行良好,我确保 .env 在 git 忽略中,这样它就不会被上传。

但是,我随后使用 google 云 运行 部署了我的应用程序...我确保转到“环境”选项卡并添加与 .env 中完全相同的变量文件。

但是,变量返回为 "UNDEFINED"。

我已经尝试了各种方法来解决这个问题,但我唯一能做的就是将我的 .env 与项目一起上传——我不希望这样做,因为 NUXT 在客户端 js 中公开了这个文件。

有人遇到过这个问题并知道如何解决吗?

DOCKERFILE:

# base node image
FROM node:10

WORKDIR /user/src/app

ENV PORT 8080
ENV HOST 0.0.0.0

COPY package*.json ./

RUN npm install

# Copy local nuxt code to the container
COPY . .

# Build production app
RUN npm run build

# Start the service
CMD npm start

亲切的问候, 乔什

不需要在 Dockerfile 中为环境变量插入值。您可以在部署时通过命令行来完成。

例如这里是我使用的Dockerfile。

FROM node:10

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

CMD ["npm","start"]

这是 app.js 文件

    const express = require('express')
    const app = express()
    const port = 8080

    app.get('/',(req,res) => {
        const envtest = process.env.ENV_TEST;
        res.json({message: 'Hello world',
                  envtest});
    });

app.listen(port, () => console.log(`Example app listening on port ${port}`))

要部署,请使用如下脚本:

gcloud run deploy [SERVICE] --image gcr.io/[PROJECT-ID]/[IMAGE] --update-env-vars ENV_TEST=TESTVARIABLE

输出将如下所示:

{"message":"Hello world","envtest":"TESTVARIABLE"}

您可以在官方文档中查看更多详细信息: https://cloud.google.com/run/docs/configuring/environment-variables#command-line

终于找到解决办法了

我使用的是 Nuxt v1。11.x Nuxt从1.13及以上版本开始自带Runtime Configurations,这就是你所需要的

在你的 nuxt.config.js:

export default {
    publicRuntimeConfig: {
       BASE_URL: 'some'
    },
    privateRuntimeConfig: {
       TOKEN: 'some'
    }
}

然后,您可以访问:


this.$config.BASE_URL || context.$config.TOKEN

更多详情here