【发布时间】:2021-06-04 05:49:32
【问题描述】:
有一个用于 SpringBoot 应用程序的 Docker 文件具有此入口点:
# some lines omitted
ENTRYPOINT java -jar app.jar --spring.config.additional-location=$(ls /config/*.properties | tr '\n' ',')
在容器启动时,主机目录被挂载到/config/ 目录:
docker run -p 9999:8080 -v C:/path/to/configuration/:/config my_image_name
它按预期工作,从主机目录中捕获所有*.properties 并将它们应用到应用程序。
为了便于阅读,我想在 ENTRYPOINT 中使用带有字符串数组的格式,如下所示:
ENTRYPOINT ["java", "-jar", "app.jar", "--spring.config.additional-location=$(ls /config/*.properties | tr '\n' ',')"]
不幸的是,$(...) 中的表达式在容器启动时没有被计算,并且应用程序抛出了一个清楚地表明问题的异常:
[main] ERROR org.springframework.boot.SpringApplication - Application run failed
java.lang.IllegalStateException: Unable to load config data from '')'
请帮助我了解如何表达 ENTRYPOINT 参数,以便可以像第一种情况一样评估 $() 中的 bash 表达式。
【问题讨论】:
标签: bash docker configuration-files docker-entrypoint