无法使用Spring数据源参数运行docker容器



我想像在带有Spring数据源参数的终端上运行Spring Boot应用程序一样,运行带有一些数据源自变量的Docker容器。例如:

java  -Dserver.port=8999 -Dlogging.org.hibernate.SQL=DEBUG -Dlogging.level.ROOT=DEBUG -Dlogging.level.io.github.jhipster=DEBUG -Dlogging.level.com.opti.ecom=DEBUG -Dlogging.path=/var/log/spring/ecom_v2/ -jar target/LatestBuild/ecom-0.0.1-SNAPSHOT.jar --spring.jpa.show_sql=true --spring.profiles.active=dev,no-liquibase --spring.datasource.url=jdbc:postgresql://aws_database_url --spring.datasource.username=user --spring.datasource.password=password --spring.datasource.hikari.maximum-pool-size=10

我已经尝试过docker run --env和上面的单个args,但它不起作用。

我不想在application.properties文件中传递这些参数。

Docker文件:

FROM openjdk:11.0.7-jre-slim
ENV DEMO_ROOT=/root
ADD /target/LatestBuild/ecom-0.0.1-SNAPSHOT.jar $DEMO_ROOT
WORKDIR ${DEMO_ROOT}
CMD  ["java", "-jar", "ecom-0.0.1-SNAPSHOT.jar"]

很乐意在这方面得到一些帮助。谢谢

您可以将Spring属性指定为环境变量,尤其是在容器设置中,这比将它们作为命令行参数传递要容易得多。

在单个docker run命令中,您可以编写

docker run 
-e SERVER_PORT=8999 
-e LOGGING_ORG_HIBERNATE_SQL=DEBUG 
...
-e SPRING_DATASOURCE_HIKARI_MAXIMUM_POOL_SIZE=10 
myimage

考虑到设置的数量,您可能会发现将它们放在一个专用文件中更方便,您可以将其传递给docker run --env-file选项。

docker run 
-d 
-p 8999:8999 
--name myapp 
--env-file spring.env 
myimage

一个好的做法是使用一个包含这些配置属性(application.properties(的配置文件

你可以使用这样的Docker文件:

FROM openjdk:11
VOLUME /conf
ADD application.jar app.jar
RUN sh -c 'touch /app.jar'
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar app.jar --spring.config.location=file:/conf/" ]
EXPOSE 80
EXPOSE 81

在/conf卷中,您应该复制application.properties

最新更新