【问题标题】:Spring boot with docker build mvn spring-boot:build-image with jvm parametes使用 docker build maven spring-boot:build-image 和 jvm 参数的 Spring Boot
【发布时间】: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


【解决方案1】:

好的,终于解决了,它的语法问题。以下编写环境的方式有效!

        environment:
            - JAVA_OPTS=
                -Dspring.profiles.active=${environment}
                -Dspring.cloud.config.enabled=true
                -Dspring.cloud.config.uri=${cloud_config_uri}
                -Djasypt.encryptor.password=${JASYPT_ENCRYPTOR_PASSWORD}

【讨论】:

    猜你喜欢
    • 2020-09-03
    • 2018-05-02
    • 1970-01-01
    • 2022-06-17
    • 2023-01-28
    • 2021-10-29
    • 2022-07-07
    • 2020-10-01
    • 2021-05-15
    相关资源
    最近更新 更多