【发布时间】:2021-03-31 02:53:52
【问题描述】:
我正在尝试使用命令为我的 spring boot docker 构建 docker 映像
mvn spring-boot:build-image
下面是我的 docker-compose.yml
version: '3.3'
services:
spring-boot-container:
ports:
- '7000:7000'
environment:
- SPRING_PROFILES_ACTIVE=${environment}
- JASYPT_ENCRYPTOR_PASSWORD=${JASYPT_ENCRYPTOR_PASSWORD}
- cloud_config_uri=${cloud_config_uri}
- "JAVA_OPTS=-Dspring.cloud.config.uri=http://localhost:8888"
image: 'artifactory.cloud.health.com/docker-all/spring_boot_app:latest'
restart: always
container_name: spring_boot_app
但我的 Spring Boot 应用程序没有提供正确的配置文件,也没有选择 java _opts。
基本上在旧方法中我创建 dockerfile,然后我给 ENTRYPOINT 我通过 -Dspring.active.profiles。
但由于我们使用mvn spring-boot:build-image,我不知道我们如何传递这些入口点变量。
【问题讨论】:
-
为什么不简单地传递
SPRING_PROFILES_ACTIVE=dev?为什么会有这个复杂的决议?此外,除非你用JAVA_OPTS做某事,否则它不会做任何事情。也不应该删除"吗? -
我们在哪里以及如何在撰写文件中传递它,它不仅仅是关于弹簧配置文件,我还有很多 arg 参数要传递。
-
您目前有 2 个竞争属性的配置文件只剩下一个。我怀疑命令行中的那个也不会使用 JAVA_OPTS 如果它首先不存在。还有
${environment}是什么,如果不能解决它会出错。 -
对于个人资料,我同意,但没有一个有效。我只是为了表明我在这两个地方都试过了。 ${environment} 是环境,我是使用导出命令传递的。
-
那当然行不通。
${environment}将在本地系统上的 docker 容器 not 内解析。
标签: spring-boot docker docker-compose