最近,我的团队将我们的应用程序部署到了生产环境中,现在我们拥有3个环境:开发,测试和生产环境。现在,我有一个配置文件,带有数据库URL的参数(当然有3个DB,每个环境一个)。
使用maven,我在pom文件中有3个配置文件,每个配置文件一个配置文件,因此在dev中,maven自动为dev创建一个配置文件。但是问题在于,如果开发人员意外地在配置文件中保存生产数据库而不是开发数据库的URL,则会在生产中引起很多问题。
在开发过程中如何阻止开发人员访问生产数据库?
注意:
1)我希望开发人员总体上可以访问生产数据库,而不仅仅是在开发期间。
2)我们正在使用java,intellij和maven,所以我认为可能有maven解决方案,或者是intellij的插件...
谢谢
答案 0 :(得分:1)
这是配置服务器很好的用例。
这将允许您控制对配置本身的访问,而不是将其混入项目中。例如,可以禁止生产配置访问开发人员。而且开发配置禁止生产用户使用。
如果可以将Spring Cloud Config包含在您的技术堆栈中,那么它是一个很好的选择。
答案 1 :(得分:1)
这是容器化的经典用例。如果您可以在很棒的Docker环境中部署应用程序,则可以将config设置为环境变量。 devops代码将使用单独的环境变量为dev,qa和prod构建docker映像。
请参阅https://12factor.net/config
如果您不接近容器化,那么可以做类似的事情-
1)在构建过程中,请勿在jar文件中包含配置。
2)在部署过程中,为给定环境和jar放置属性文件。您可以将源文件控制为部署devops代码的一部分。
在开发过程中,开发人员可以拥有开发者属性文件的副本,而无需提交给源代码控制。如果他们错误地提交了它,那么就不会有问题,因为构建过程会忽略它,并且部署会根据环境添加属性文件。