我有一个前端(React)应用程序。我想构建它并部署到 3 个环境 - 开发、测试和生产。作为每个前端应用程序,它都需要调用一些 API。 API 地址会因环境而异。所以它们应该存储为环境变量。
我利用 S2I Openshift 构建策略来创建镜像。应该构建图像并密封更改,然后在部署到每个特定环境之前注入(inject)变量。
所以我相信正确的解决方案是链式的两阶段构建。第一个 S2I 编译源并将其放入 Nginx/Apache/other 容器中,第二个获取第一个结果,添加环境变量并生成最终图像,将部署到开发、测试和生产。
它是正确的方法还是存在更简单的解决方案?
最佳答案
我不会将您的环境信息烘焙到您的运行时容器镜像中。容器化的主要好处之一是使用 相同所有环境中的运行时镜像。为每个环境生成不同的镜像会增加您的生产部署的行为与您在较低环境中测试的部署不同的机会。
对于非敏感信息,参数化运行时镜像的典型方法是使用以下一项或多项:
对于敏感信息,典型的方法是使用:
关于docker - 如何向 OpenShift/Kubernetes 部署提供环境信息(如外部服务 URL 或密码)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59751802/