NextJS - 如何获取运行时环境变量

Bo *_*ana 20 environment-variables next.js

菜鸟问题,我很抱歉。

我想知道是否有人知道 NextJS 自托管(例如 docker 或 kubernetes)的推荐部署流程。我正在执行一次典型的构建,按环境发布,同时更改环境变量以匹配环境,但保持图像相同。

由于当您使用“getInitialProps”和“publicRuntimeConfig”时,NextJS 自动选择退出 SSG,我想知道将同一映像部署到多个环境的最佳方法是什么(同样,在通用云上自托管,例如 docker run)。

  1. 我是否必须始终烘焙环境变量?因此,我必须为每个环境以及每次更新环境变量构建一个映像。
  2. 使用 publicRuntimeConfig / getInitialProps 但忘记 SSG 优化,即使我的变量不敏感(例如 GA_TRACKING_ID)
  3. ... 还有别的事吗?

感谢您的帮助!

Gyu*_*Fox 3

你可能想看看react-env,它就是这样做的。

这个想法是,react-env 将为您生成一个__ENV.js包含环境变量的 JS 文件,然后您可以通过窗口或env帮助程序在客户端访问该文件,例如:

<small>
  Works in the browser: <b>{env("CRA")}</b>.
</small>
Run Code Online (Sandbox Code Playgroud)

使用 Docker 时,您可以设置一个入口点__ENV.js,在容器启动时生成所需的内容 :

ENTRYPOINT yarn react-env --env APP_ENV
Run Code Online (Sandbox Code Playgroud)