我们正在开发一个 Dockerized NextJS 应用程序,该应用程序被认为只需构建一次并部署到我们将有不同配置的多个环境中。当部署为环境变量时,此配置将在 Docker 容器中设置。
为了实现这一目标,我们使用next.config.js文件,拆分对增值经销商serverRuntimeConfig
和publicRuntimeConfig
所建议的在这里,和我们正在从process.env环境变量的值。IE:
module.exports = {
serverRuntimeConfig: {
mySecret: process.env.MY_SECRET,
secondSecret: process.env.SECOND_SECRET,
},
publicRuntimeConfig: {
staticFolder: process.env.STATIC_FOLDER_URL,
},
}
Run Code Online (Sandbox Code Playgroud)
我们遇到的问题是这些变量不是在构建时(当我们运行时next build
)设置的,因为它们是特定于环境的并且应该在部署时设置。因此,构建失败并抱怨缺少变量。
按环境进行构建不是一种选择:如前所述,我们希望构建一次(使用next build
),将构建的输出放在 docker 容器中,并在多个环境中使用该 docker 容器部署。
有没有办法解决这个问题,以便应用程序在没有环境变量的情况下构建,然后我们在运行时(部署)传递它们?
我们终于找到了问题所在。
我们在同构端使用的帮助程序中导入代码,并中继 serverRuntimeConfig 变量,然后在构建时需要它来创建包。
从助手中删除导入解决了该问题。
归档时间: |
|
查看次数: |
457 次 |
最近记录: |