小编Dai*_*Day的帖子

无法从Gitlab CI访问私有MySQL Docker镜像

我一直在尝试从我的Docker Hub存储库中将私有(自定义)MySQL映像作为服务引入gitlab-ci.yml管道.我添加了一个尝试使用我的用户名和密码(CI变量)登录dockerhub的before_script.失败的构建日志中没有输出表明登录到Docker Hub是否成功,但我假设没有,因为我的图像的拉动失败并显示以下消息(编辑:或者它甚至从未尝试过,因为gitlab试图获取在运行before脚本之前的服务?):

存储库不存在或可能需要'docker login'(executor_docker.go:168:0s)

我正在使用共享运行器(因为我相信这是我使用gitlab.com的唯一选择吗?)我已经看到了很多关于docker的gitlab ci标记的提及但是我没有找到解释如何促进这个的文档.

我确信我只是忽略了某些事情/不理解或在我的搜索中遇到了相应的解决方案,所以如果我只是缺乏经验并且事先感谢任何帮助,那么道歉.

我的gitlab-ci(maven变量是因为这个项目的构建依赖于私有maven repo.数据库和redis主机变量在运行时被注入我的应用程序,因此他们知道要指向哪个容器)

image: maven:3.5.0-jdk-8

before_script:
  - "docker login -u$DOCKER_USER -p$DOCKER_PASS" #pipeline variables

variables:
  MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
  MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
  DATABASE_HOST: mysql
  REDIS_HOST: redis

services:
  - name: privaterepo/private-mysql-schema
    alias: mysql
  - name: redis:latest
    alias: redis

stages:
  - build

maven-build:
  stage: build
  script: "mvn $MAVEN_CLI_OPTS package -B"
  artifacts:
    paths:
      - target/*.jar
Run Code Online (Sandbox Code Playgroud)

docker gitlab-ci dockerhub

7
推荐指数
1
解决办法
1405
查看次数

Eureka Client - 无法自动装配客户端(spring 说定义了 2 个 bean)

我有一个应用程序,它是一个尤里卡发现客户端。

它在我的 Eureka 服务器上注册得很好。

遗憾的是,当我尝试在任何 @Component 或 @Service 类中自动装配 EurekaClient 以获取注册表实例详细信息时,我被告知我无法自动装配,因为有 2 个 bean 定义:

在此处输入图片说明

我不知道是什么原因造成的。我的 pom.xml 文件中有以下依赖项。

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
    <exclusions>
        <exclusion>
            <groupId>javax.ws.rs</groupId>
            <artifactId>jsr311-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>
Run Code Online (Sandbox Code Playgroud)

...

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jersey</artifactId>
</dependency>`
Run Code Online (Sandbox Code Playgroud)

第一个依赖项中的排除是由于与第二个依赖项冲突。

我的应用程序是通过以下配置类启用发现的应用程序:

@Configuration
@EnableDiscoveryClient
public class EurekaDiscoveryConfiguration {
}
Run Code Online (Sandbox Code Playgroud)

我真的不明白为什么它认为有 2 个 bean 与该描述匹配。

FWIW,奇怪的是,我可以在没有用 @Component 或 @Service 注释的类中自动装配它......并且它们工作 - 我已经设法让它们正确返回实例信息。

我有一种感觉,并且我已经阅读了一些关于它的内容,即在我的服务中使用 jersey 2.0 会干扰 eureka。我可能只是换领事......

非常感谢您提供任何建议。

编辑:(添加测试类)

这并没有告诉你太多 - 这只是基本的应用程序测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class MyAppApplicationTest {

    @Test
    public void contextLoads() {
    }
}
Run Code Online (Sandbox Code Playgroud)

...许多测试扩展了该类,但它本身都失败了。尝试构建我目前已自动装配 …

java service-discovery maven spring-boot netflix-eureka

5
推荐指数
1
解决办法
3092
查看次数

我正在使用@PropertySource和@ConfigurationProperties的组合,但我想用外部属性文件覆盖它们

我已经建立了一个春季启动项目.

在其中,我有一个如下所示的属性类:

@Configuration
@PropertySource(value = "classpath:abc.properties")
@ConfigurationProperties
public class ABCProperties {

private Map<String, String> someUrls;

@Bean
public Map<String, String> someUrls() {
    return someUrls;
}

public Map<String, String> getSomeUrls() {
    return someUrls;
}

public void setSomeUrls(Map<String, String> someUrls) {
    this.someUrls = someUrls;
}
}
Run Code Online (Sandbox Code Playgroud)

abc.properties文件的内容如下所示:

someUrls.urlA=someURL someUrls.urlB=someOtherURL

在项目中,在resources文件夹(和test resources文件夹)中,我提供了一个abc.properties文件.一旦构建并运行,程序就可以按预期访问abc.properties文件中的属性(也可以在测试中正确访问) - 它们很好地映射到我的url映射.

到现在为止还挺好.

但是,我在属性类中引用的URL并不总是相同.在某些部署中,我想覆盖它们.使用我的application.properties文件中指定的属性,这很容易; 只是在我运行应用程序的同一个(根)文件夹中有另一个外部application.properties文件将覆盖我自动放入的任何属性.

我想要做的有时也是在应用程序的根文件夹中放置一个外部abc.properties文件,并以相同的方式覆盖abc.properties属性.当然我试过这个,但是内置在jar中的abc.properties文件中的属性会被保留而不会被覆盖.实际上,我不确定spring boot程序是否识别出根文件夹中存在另一个外部abc.properties文件.

我似乎无休止地阅读了如何在没有成功的情况下实现这一目标.我也尝试在我的application.properties中指定以下内容,但它没有任何区别(即使它确实有效也不理想,因为我不想在所有情况下都指定直接路径).

spring.config.location=/path/to/application/root/ spring.config.name=abc.properties

如果我不得不猜测,问题是在属性类中我指向'classpath:..'并且外部文件实际上不在类路径上,因为它是......外部的.

但是 spring boot知道如何在其根应用程序文件夹中查找覆盖application.properties所以我希望它也能够查找其他属性文件来覆盖?我只是无法理解如何实现这一目标.

是的,我特别希望我的属性在这个abc.properties文件而不是应用程序属性中.

非常感谢您的帮助!

java configuration properties properties-file spring-boot

1
推荐指数
1
解决办法
2261
查看次数