我最近构建了一个 Nextjs 应用,并托管在 Google Cloud Run 上。
我的应用通过 getStaticProps()
方法向外部 API 发出一些请求。
我希望能够根据环境(例如 prod 或 dev)使用针对每个环境设置不同的环境变量来指向不同的 API 主机。
我知道我可以将这些变量存储在环境特定的文件中,例如 .env.development
和 .env.production
但是我希望能够将这些环境变量存储在 Google Cloud 控制台的环境变量字段中云运行服务并跳过将它们完全存储在文件中。
我尝试将变量添加到 Cloud Run,但它不起作用。我也试过用 NEXT_PUBLIC_ 为变量加上前缀......但没有运气。
有没有人有任何关于如何实现这一点的提示?
答案 0 :(得分:2)
好的...我想我现在已经想通了。
我使用 Cloud Builds 构建我的容器,容器在运行 npm run build
之前运行 npm run start
。
我假设我的 Cloud Run 变量在 Cloud Build 构建项目时不可用。
所以,我认为我的解决方案是尝试在构建时使用替换变量注入变量。
编辑:确认。如果我在开发模式下启动 Nextjs,以便针对每个请求在服务器上呈现页面,则使用 Cloud Run 环境变量。 为了构建用于生产的 Nextjs 应用程序,我将环境变量包含在 Cloud Build 构建的 Dockerfile 中