【发布时间】:2020-04-27 22:29:05
【问题描述】:
我们正在开发一个 Dockerized NextJS 应用程序,该应用程序被认为是一次构建并部署到我们将有不同配置的多个环境中。当部署为环境变量时,此配置将在 Docker 容器中设置。
为了实现这一点,我们使用 next.config.js 文件,按照建议 here 拆分 serverRuntimeConfig 和 publicRuntimeConfig 上的变量,并且我们从 process.env 获取环境变量的值.即:
module.exports = {
serverRuntimeConfig: {
mySecret: process.env.MY_SECRET,
secondSecret: process.env.SECOND_SECRET,
},
publicRuntimeConfig: {
staticFolder: process.env.STATIC_FOLDER_URL,
},
}
我们遇到的问题是这些变量没有在构建时设置(当我们运行next build 时),因为它们是特定于环境的并且应该在部署时设置。因此,构建失败并抱怨缺少变量。
根据环境进行构建不是一种选择:如前所述,我们希望构建一次(使用next build),将构建的输出放入 docker 容器中,并在多个环境中使用该 docker 容器部署.
有没有办法解决这个问题,以便应用程序在没有环境变量的情况下构建,然后我们在运行时(部署)时传递它们?
【问题讨论】: