小编RoK*_*RoK的帖子

Spring:将所有Environment属性作为Map或Properties对象访问

我正在使用注释来配置我的弹簧环境,如下所示:

@Configuration
...
@PropertySource("classpath:/config/default.properties")
...
public class GeneralApplicationConfiguration implements WebApplicationInitializer 
{
    @Autowired
    Environment env;
}
Run Code Online (Sandbox Code Playgroud)

这导致我的default.properties属性成为Environment的一部分.我想在这里使用@PropertySource机制,因为它已经提供了基于环境设置(例如config_dir位置)通过几个回退层和不同动态位置来重载属性的可能性.我只是删除了后备以使示例更容易.

但是,我现在的问题是我想在default.properties中配置我的数据源属性.您可以将设置传递给数据源,而无需详细了解数据源期望使用的设置

Properties p = ...
datasource.setProperties(p);
Run Code Online (Sandbox Code Playgroud)

但问题是,Environment对象既不是Properties对象也不是Map,也不是任何可比较的对象.从我的角度来看,根本无法访问环境的所有值,因为没有keySet或iterator方法或任何可比较的方法.

Properties p <=== Environment env?
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?是否有可能以某种方式访问​​Environment对象的所有条目?如果是,我可以将条目映射到Map或Properties对象,我甚至可以通过前缀过滤或映射它们 - 创建子集作为标准java Map ...这就是我想要做的.有什么建议?

spring

65
推荐指数
6
解决办法
8万
查看次数

Jenkins + Docker:如何在使用Image.inside命令时控制docker用户

亲爱的Stackoverflow社区,

我正在尝试使用docker镜像作为构建过程的容器来设置Jenkins CI管道.我正在定义一个Jenkinsfile以将构建管道作为代码.我正在做这样的事情:

node {
  docker.withRegistry('http://my.registry.com', 'docker-credentials') {     
      def buildimage = docker.image('buildimage:latest');
      buildimage.pull();
      buildimage.inside("")
      {
        stage('Checkout sources') {
          git url: '...', credentialsId: '...'
        }

        stage('Run Build and Publish') {
            sh "..."
        }
      }
  }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我绊倒了Docker管道插件的奇怪行为.在构建输出中,我可以看到Image.inside(...)命令用a触发容器

docker run -t -d -u 1000:1000 ...
Run Code Online (Sandbox Code Playgroud)

这使我的构建失败,因为Dockerfile中定义的用户没有UID 1000 ......实际上是另一个用户.我甚至尝试指定应该在Jenkinsfile中使用哪个用户

node {
  docker.withRegistry('http://my.registry.com', 'docker-credentials') {     
      def buildimage = docker.image('buildimage:latest');
      buildimage.pull();
      buildimage.inside("-u otheruser:othergroup")
      {
        stage('Checkout sources') {
          git url: '...', credentialsId: '...'
        }

        stage('Run Build and Publish') {
            sh "..."
        }
      }
  }
}
Run Code Online (Sandbox Code Playgroud)

但这会导致生成的docker …

jenkins docker jenkins-pipeline

21
推荐指数
2
解决办法
1万
查看次数

标签 统计

docker ×1

jenkins ×1

jenkins-pipeline ×1

spring ×1