当前位置: 首页 > 知识库问答 >
问题:

如何从Docker“run”命令设置Spring Boot属性

习胤运
2023-03-14

我有一个Spring Boot应用程序,我打算将其部署为docker容器。

我正在使用DOCKERFILE来构建带有入口点的映像:entrypoint[“java”,“-jar”,“myfolder/app.jar”]

映像构建在一个JENKINSFILE中,如下所示:Docker build。-T回购/应用程序:最新

我正在使用一个脚本来运行docker映像。我想根据该脚本的参数设置自定义属性的值。

因此,假设我有一个自定义属性:custom.property.istest=false。它控制bean应该返回哪个类的实例,例如

@Value("${custom.property.isTest:false}")
boolean isTest;

@Bean
public MyService myServiceImpl(){
    if(isTest) {
        return new myServiceTestImpl();
    } else {
        return new myServiceImpl();
    }
}

我希望能够在运行docker映像时设置此值。例如,使用参数:-e执行以下操作(不起作用)'custom.property.istest=true'。有可能吗?

谢谢

共有1个答案

卫飞
2023-03-14

是的,您可以像-e uppercase_of_your_property那样传递这个变量

示例:

docker run -d --name servie-name -e CUSTOM_PROPERTY_ISTEST=true  -p port:port image:tag
 类似资料:
  • 我使用第三方GUI(Synology Docker软件包)来设置Docker容器。但是,它的局限性使我需要从命令行运行容器。(我想映射另一个主机ip以绑定端口) 现在,由于已经完成了很多设置,我想检索启动这个容器的原始run命令,然后我可以将端口映射端口更改为新的端口。例如“” 我找不到这样做的方法,事件使用“docker inspect”,没有提供此类信息。 请提供一些建议来解决这个问题。

  • 问题内容: 我想编写类似于以下内容的HTML: 并且有一个名为“ sharedasset”的指令,该指令获取到完整的路径并设置属性的值,而该指令事先不知道属性名称是什么。这可能吗? 更新资料 自从我最初发布此内容以来,对Angular进行了一些改进,因此我想分享一下我现在所做的事情。在HTML中,我使用Guido Bouman的答案(即创建一个过滤器),现在有了Angular的 一次绑定 功能,这

  • 问题内容: 我正在按照此文档进行安装,并与命令混淆: 我知道“ ”命令只是返回成功状态代码,但是我如何理解该命令中的角色? 问题答案: 运行并因此创建一个新容器(即使终止)仍然保留所生成的容器图像和元数据,这些图像和元数据仍然可以链接到该容器。 因此,在运行时,您实际上是在创建一个用于存储目的的新容器并运行最简单的方法。 在Docker 1.5中引入了命令,因此我相信您现在可以“创建”容器而不会混

  • 问题内容: 有没有一种方法可以在没有用户/密码的情况下从命令行重设所有(或只是禁用安全性设置),因为我设法完全将自己锁定在外面? 问题答案: 最简单的解决方案是完全禁用安全-变化给在文件中。 然后只需重新启动詹金斯, 然后转到管理面板并再次设置所有内容。 如果您是从docker在k8s pod中运行Jenkins,这是我的情况,并且无法运行命令,那么您可以通过删除pod来重新启动Jenkins:

  • 问题内容: 我有一个创建的容器,但我不记得我用来启动它的确切命令。有什么办法可以找回吗? 这与在Docker中查看运行/停止容器的完整命令不同, 我想知道的是生成容器的完整docker命令,而不是容器内的命令。 问题答案: 通过查看的输出,您可以推断出大部分信息。 例如,您可以通过查看键来发现在容器内部启动的命令。如果我运行: 我以后可以运行: 得到: 同样,的输出还将包含有关容器中使用的Dock

  • 我有一个我创建的容器,但我记不起我用来启动它的确切的docker run命令。有什么方法可以找回吗? 这与在Docker中查看运行/停止容器的完整命令不同,我想知道的是生成容器的完整Docker命令,而不是容器中的命令。