使用骆驼春季启动项目中的环境variables的configuration文件
我正在骆驼春季启动项目上,在camelcontext.xml
我通过环境variables使用configuration文件。
代码如下 –
<?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机器上正常运行这个项目时,它正在成功运行。 但是,当我尝试创build一个docker集装箱 ,我无法得到这个cfg
文件。
我试过这些东西 –
- 将path硬编码为
C:/Users/camelproject/src/main/resources/config.cfg
和C:\Users\camelproject\src\main\resources\config.cfg
(我不确定文件的结构path) - 在
Dockerfile
创build一个ENV
为:ENV cfgfilepath C:/Users/camelproject/src/main/resources/config.cfg
和ENV cfgfilepath C:\Users\camelproject\src\main\resources\config.cfg
和ENV cfgfilepath C://Users//camelproject//src//main//resources//config.cfg
,然后使用上面代码中的variables。 - 在运行
C:/Users/camelproject/src/main/resources/config.cfg
docker run
命令时,传递了C:/Users/camelproject/src/main/resources/config.cfg
作为-e
选项中的值。 即。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
replace,但是也返回了下面的错误。
我哪里错了? 我得到的错误 –
FileNotFoundException:C:/Users/camelproject/src/main/resources/config.cfg(没有这样的文件或目录)
或者(当我使用环境variables)
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