如何在apacheignite / docker库存映像中加载secret.properties文件

时间:2019-05-06 07:13:17

标签: spring docker ignite

我使用gridgain的网络控制台为我的ignite节点(ignite-config.xml)创建了一个配置文件。我想看看是否可以在apache的docker ignite映像(apacheignite / ignite)中运行它。我已经在compose文件中创建了一个卷,该卷映射到存放ignite-config.xml的config文件夹。

我还需要包含secret.properties(具有我的jdbc url /用户名/密码)文件,因此我也将其放在config文件夹中。

当我做一个docker-compose时,我得到一个java.io.FileNotFoundException: class path resource [config/secret.properties] cannot be opened because it does not exist]

这是xml配置的一部分,用于处理secret.properties位置:

   <!-- Load external properties file. -->
    <bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:secret.properties"/>
    </bean>

我需要更改什么才能加载config文件夹中的secret.properties文件?有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

我不知道如何在不进行完整构建和部署的情况下轻松地部署secret.properties文件,但是为了进行测试,为了超越该范围,您可以摆脱secret.properties并使用环境变量

对于与Postgres的JDBC连接,可能看起来像这样:

<!-- Data source beans will be initialized from external properties file. -->
<bean id="dsPostgreSQL_Daifcqkp30zkdj" class="org.postgresql.ds.PGPoolingDataSource">
    <property name="url" value="#{systemEnvironment['dsPostgreSQL_Daifcqkp30zkdj_jdbc_url']}"/>
    <property name="user" value="#{systemEnvironment['dsPostgreSQL_Daifcqkp30zkdj_jdbc_username']}"/>
    <property name="password" value="#{systemEnvironment['dsPostgreSQL_Daifcqkp30zkdj_jdbc_password']}"/>
</bean>

然后,只需设置您的环境变量:

IGNITE_VERSION=2.7.5
CONFIG_URI=https://raw.github.com/some/path/to/your/config.xml
OPTION_LIBS=ignite-zookeeper,ignite-rest-http
EXTERNAL_LIBS=https://github.com/some/path/to/your/jdbc-drivers/postgresql-42.2.6.jar?raw=true
dsPostgreSQL_Daifcqkp30zkdj_jdbc_username=0a9suf09asdfkjwel
dsPostgreSQL_Daifcqkp30zkdj_jdbc_password=8faskdfn94noiasnf09_s09fklajfealk
dsPostgreSQL_Daifcqkp30zkdj_jdbc_url=jdbc:postgresql://<host>:<port>/Daifcqkp30zkdj?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory

答案 1 :(得分:0)

有同样的问题,可能没有以“正确”的方式解决(无论是哪种方式),但是对于POC仍然以这种方式解决了该问题:

  1. 仅使用机密文件创建独立的jar文件
  2. 命名为dsPostgreSQL_Daifcqkp30zkdj_jdbc.jar或类似名称
  3. 将jar文件放在libs目录中

似乎classpath只是\ libs子目录中所有JAR文件的内容,因此必须执行...这将具有允许签名的JAR的优点-我相信-除了文件系统权限,可见性等),至少确保它不会被篡改。