如何容器化用Java编写的依赖于环境的遗留应用程序



我们有一个使用ApacheStruts1.x和Spring2.x用Java编写的遗留应用程序,我们希望将其容器化。

我们遇到的问题是配置此项目的方式。它是通过Maven属性和概要文件(每个环境一个(完成的,这些属性和概要被转换为属性文件。在编译时,这些属性被放置在WAR中。

在不修改项目代码的情况下,创建此应用程序的映像的正确方法是什么?也就是说,配置以某种方式被外部化,例如,在环境变量中。也许它应该在一本书中?

到目前为止,我们已经实现了一个两阶段的Dockerfile,它首先使用特定概要文件与Maven进行编译,然后在第二阶段从Tomcat映像中复制WAR。但是通过这种方式生成的Docker映像不是独立于环境的,这正是我们想要实现的。

谢谢!

Spring Cloud Config Server为外部配置(名称-值对或等效的YAML内容(提供了基于HTTP的API。通过使用@EnableConfigServer注释,服务器可以嵌入到Spring Boot应用程序中。

因此,将在一个包含所有环境配置的容器上部署Spring Cloud配置服务器-https://cloud.spring.io/spring-cloud-config/multi/multi__spring_cloud_config_server.html

一旦部署好,您就可以使用bootstrap.yml文件在不同的环境中轻松地部署应用程序docker映像,该文件接受基于配置文件(dev/uat/staining/prod(的云配置服务器

###
server:
port: 9092
spring:
application:
name: application-name
cloud:
config:
urI: REPLACE_CLOUD_CONFIG_URI (https://<spring_cloud_config_url>:8888/)
profiles:
active: REPLACE_PROFILE (dev/uat/staging/prod)
management:
endpoints:
web:
exposure:
include: refresh

最新更新