在camel spring启动项目中使用环境变量使用配置文件

时间:2017-12-18 12:41:25

标签: xml docker apache-camel

我正在开发一个驼峰弹簧启动项目,在camelcontext.xml我通过环境变量使用配置文件。

代码如下 -

<?xml version="1.0" encoding="UTF-8"?>
.
.
.
    <bean id="bridgePropertyPlaceholder"
        class="org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer">
        <property name="location" value="file:${cfgfilepath}config.cfg" />
        <property name="parser" ref="jasypt" />
    </bean>
.
.
// remaining code

现在,当我在 Windows 计算机中正常运行此项目时,它已成功运行。但是当我尝试创建 docker容器时,我无法获取此cfg文件。

我试过这些东西 -

  • 将路径硬编码为 C:/Users/camelproject/src/main/resources/config.cfgC:\Users\camelproject\src\main\resources\config.cfg (我不确定 文件路径的结构)
  • ENV中创建Dockerfile作为 - ENV cfgfilepath C:/Users/camelproject/src/main/resources/config.cfgENV cfgfilepath C:\Users\camelproject\src\main\resources\config.cfg以及ENV cfgfilepath C://Users//camelproject//src//main//resources//config.cfg,然后使用上述代码中的变量。
  • 在运行C:/Users/camelproject/src/main/resources/config.cfg命令时,在-e选项中传递了docker run作为值。即。 docker run -e cfgfilepath=C:/Users/camelproject/src/main/resources/config.cfg
  • Dockerfile我做过 - COPY target/config.cfg /app/config/config.cfg然后在camelContext.xml中,我用value="file:/app/config/config.cfg替换了,但这也返回了以下错误。

我哪里错了?我得到的错误 -

  

FileNotFoundException异常:   C:/Users/camelproject/src/main/resources/config.cfg(没有这样的文件或   目录)

(当我使用环境变量时)

  

FileNotFoundException异常:   $ {cfgfilepath} config.cfg(没有这样的文件或   目录)

Dockerfile -

FROM java:openjdk-8-jre-alpine 

WORKDIR /app

VOLUME /app /var/config

# add directly the jar
ADD target/camelproject-jar-with-dependencies.jar /app.jar
COPY target/config.cfg /app/config/config.cfg

# ENV cfgfilepath /app/config/
# ENV cfgfilepath C:/Users/camelproject/src/main/resources/
ENV cfgfilepath C://Users//camelproject//src//main//resources//

RUN sh -c 'touch /app.jar'

CMD echo "The application will start in few seconds..." && \
    java -Djava.security.egd=file:/dev/./urandom -jar /app.jar

0 个答案:

没有答案