【问题标题】:Spring boot and mongo db gitlab CI/CDSpring Boot 和 mongo db gitlab CI/CD
【发布时间】:2020-04-29 05:11:04
【问题描述】:

我已经设置了一个 Spring Boot API,它在运行 MongoDB 的情况下执行 CRUD 操作。 我需要使用 GitLab 自动在托管 MongoDB 的 CI 上运行命令

mvn clean install -B

mvn clean test

来自 .gitlab-ci.yml。

com.mongodb.MongoSocketOpenException: Exception opening socket
    at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:70) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:128) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) ~[mongodb-driver-core-3.11.2.jar:na]
    at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
 Caused by: java.net.ConnectException: Connection refused (Connection refused)
    at java.base/java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:na]
    at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399) ~[na:na]
    at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242) ~[na:na]
    at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224) ~[na:na]
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403) ~[na:na]
    at java.base/java.net.Socket.connect(Socket.java:609) ~[na:na]
    at com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:64) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:79) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) ~[mongodb-driver-core-3.11.2.jar:na]
    ... 3 common frames omitted

在运行 mvn clean install 之前寻找 .gitlab-ci.yml 文件来执行 Mongo 服务器实例化和数据库创建

当前.gitlab-ci.yml

image: maven:3.6-jdk-11

stages:
  - build

cache:
  paths:
    - target/

services:
  - mongo:latest

build:
  stage: build
  script:
    - "mvn clean install -B"
  artifacts:
    paths:
      - ./target/*************

【问题讨论】:

  • 您在应用程序属性中使用的数据库 URL 是什么?很可能您需要将 localhost 更改为 mongo 以使其在 gitlab-ci 中工作...
  • 我使用`spring.data.mongodb.repositories.enabled=true merlot.target.db.mongo.uri=mongodb://mongo:27017/ server.port=8095`
  • gitlab runner 怎么样?是 docker runner 吗?

标签: mongodb spring-boot api docker gitlab


【解决方案1】:

感谢您的突出答案/ cmets

我能够使用 embed.mongo 以这样一种方式解决问题,即在正常 API 运行时,它使用托管的实际 Mongo 商店。测试将在 embed.mongo 上运行

添加依赖:

  <dependency>
            <groupId>de.flapdoodle.embed</groupId>
            <artifactId>de.flapdoodle.embed.mongo</artifactId>
            <version>1.48.0</version>
            <scope>test</scope>
  </dependency>

常见的Mongo配置

@Configuration
@EnableAutoConfiguration(exclude = { EmbeddedMongoAutoConfiguration.class })
public class MongoConfig {
}

用于测试类的注解

@ContextConfiguration(classes = {MongoConfig.class})
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
@AutoConfigureDataMongo

【讨论】:

    猜你喜欢
    • 2020-07-03
    • 2021-08-17
    • 2022-08-10
    • 2021-01-15
    • 2019-01-06
    • 2020-10-30
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多