最近,我的团队将我们的应用程序部署到生产环境中,现在我们有3个环境:开发、测试和生产。现在,我有了一个配置文件,其中包含一个DB的URL参数(当然有3个DB,每个环境一个)。
使用maven时,我在pom文件中有3个配置文件,每个环境一个,所以在dev中,maven会自动为dev创建一个配置文件。但问题是,如果开发人员意外地在配置文件中保存了生产数据库的URL,而不是开发数据库的URL,这将在生产中造成许多问题。
如何阻止开发人员在开发过程中访问生产数据库?
注意:
1)我希望开发人员在一般情况下都能访问生产数据库,只是在开发时不能。
2)我们使用的是java、intellij和maven,所以我想可能会有maven的解决方案,或者intellij的插件……
谢谢
发布于 2020-01-05 00:54:39
对于配置服务器来说,这是一个非常好的用例。
它将允许您控制对配置本身的访问,而不是将其混合到您的项目中。例如,可以阻止开发人员访问生产配置。以及禁止生产用户访问的开发配置。
如果Spring Cloud Config可以包含在您的技术堆栈中,那么它是一个很好的候选者。
发布于 2020-01-05 01:45:00
这是一个典型的容器化用例。如果你可以将你的应用部署在一个非常棒的docker环境中,你可以将config设置为环境变量。devops代码将使用单独的环境变量为dev、qa和prod构建docker镜像。
请参阅https://12factor.net/config
如果你没有接近于容器化,那么你可以做一些类似的事情-
1)在构建过程中,不要将配置包含在jar文件中。
2)在部署过程中,为给定的环境和jar放置一个属性文件。您可以将属性文件作为部署devops代码的一部分进行源代码控制。
在开发过程中,开发人员可以拥有一份dev属性文件的副本,他们不需要将其提交给源代码管理。如果他们错误地提交了它,那么就不会有问题,因为构建过程会忽略它,并且部署会根据环境添加属性文件。
https://stackoverflow.com/questions/59592720
复制相似问题