云运行服务器中的 ENV 变量不可访问。

问题描述 投票:0回答:1

所以,

  1. 我正在使用NUXT
  2. 我部署到谷歌云运行
  3. 我在开发中使用dotenv包和.env文件,工作正常。

我使用的命令是 process.env.VARIABLE_NAME 在我的开发服务器上的Nuxt上,它工作得很好,我确保.env是在git忽略,所以它不会被上传。

然而,我然后部署我的应用程序使用谷歌云运行... ... 我确保我进入Enviroments选项卡并添加与.env文件中完全相同的变量。

enter image description here

然而,这些变量被返回为 "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

Kind Regards,Josh

node.js google-cloud-platform environment-variables nuxt.js google-cloud-run
1个回答
0
投票

插入值到环境变量是不需要在Docker文件中做的。你可以在部署时通过命令行来完成。

例如,这里是我使用的Docker文件。

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.comrundocsconfiguringenvironment-variables#命令行。

© www.soinside.com 2019 - 2024. All rights reserved.