我正在使用注释来配置我的弹簧环境,如下所示:
@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 ...这就是我想要做的.有什么建议?
亲爱的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 …