所以,
我使用的命令是 process.env.VARIABLE_NAME
在我的开发服务器上的Nuxt上,它工作得很好,我确保.env是在git忽略,所以它不会被上传。
然而,我然后部署我的应用程序使用谷歌云运行... ... 我确保我进入Enviroments选项卡并添加与.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
Kind Regards,Josh
插入值到环境变量是不需要在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#命令行。