我正在开发一个驼峰弹簧启动项目,在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.cfg
和
C:\Users\camelproject\src\main\resources\config.cfg
(我不确定
文件路径的结构) ENV
中创建Dockerfile
作为 - 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
,然后使用上述代码中的变量。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