作者:小朱-听听积 | 来源:互联网 | 2023-02-05 11:16
我正在学习如何使用Springer应用程序使用Docker.我遇到了一个小障碍,我希望有人能看到这个问题.我的应用程序在很大程度上依赖于在特定于环境的属性文件中设置的@Value.在我的/ src/main/resources中,我有三个属性文件
application.properties
application-local.properties
application-prod.properties
我通常使用以下命令启动我的应用程序:java -jar -Dspring.profiles.active = local build/libs/finance-0.0.1-SNAPSHOT.jar
并且读取"application-local.properties"并正确运行.但是,我使用的是src/main/docker/DockerFile:
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD finance-0.0.1-SNAPSHOT.jar finance.jar
RUN sh -c 'touch /finance.jar'
EXPOSE 8081
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /finance.jar" ]
然后我开始它:
docker run -p 8081:80用户名/ reponame/finance -Dspring.profiles.active = local
我收到错误,找不到我的@Values:引起:java.lang.IllegalArgumentException:无法解析值"$ {spring.datasource.driverClassName}"中的占位符'spring.datasource.driverClassName'
但是,该值确实存在于*.local和*.prop属性文件中.
spring.datasource.driverClassName=org.postgresql.Driver
我是否需要做一些特别的事情来获取它?
更新:
根据M. Deinum的反馈,我将我的创业改为:
docker run -p 8081:80用户名/ reponame/finance -eSPRING_PROFILES_ACTIVE = local
但这没有用到UNTIL我意识到订单问题,所以现在运行:
docker run -e"SPRING_PROFILES_ACTIVE = test"-p 8081:80用户名/ reponame/finance
工作得很好.