无法访问云 运行 服务器中的 ENV 变量
ENV variables within cloud run server are no accessible
所以,
- 我正在使用 NUXT
- 我正在部署到 google 云 运行
- 我在开发中使用带有 .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
所以,
- 我正在使用 NUXT
- 我正在部署到 google 云 运行
- 我在开发中使用带有 .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