【问题标题】:How to create database in TestContainers?如何在 TestContainers 中创建数据库?
【发布时间】:2018-06-26 15:55:32
【问题描述】:

我正在使用这个依赖:

<dependency>
    <groupId>org.testcontainers</groupId>
    <artifactId>postgresql</artifactId>
    <version>1.5.1</version>
    <scope>test</scope>
</dependency>

这是容器,在我的测试中启动:

@ClassRule
public static PostgreSQLContainer postgres = new PostgreSQLContainer()
    .withDatabaseName("user")
    .withUsername("postgres")
    .withPassword("postgres");

但是当我尝试建立与数据库user 的连接时,我收到异常:

PSQLException: FATAL: database "user" does not exist

在此容器中仅显示默认 DB "postgres"

如何创建数据库"user"

【问题讨论】:

    标签: testcontainers


    【解决方案1】:

    我在 TestContainers 项目中尝试了this test,DB_NAME 设置为“user”,USER/PWD 设置为“postgres”,结果成功。 确保正确配置连接,或考虑JDBC-style containers

    【讨论】:

      【解决方案2】:

      问题是因为容器返回带有随机端口的 JDBC_URL,并且默认端口可以访问默认 Postgres DB,但你需要一个随机端口

      这是解决方法:

      @ClassRule
      public static DockerComposeContainer environment =
          new DockerComposeContainer(new File("src/test/resources/docker-compose-postgres.yml"))
              .withExposedService("postgres-it", 5432);
      

      这是 docker-compose yml:

      version: "2"
          services:
          postgres-it:
              image: postgres
              ports:
                  - 5432:5432
              hostname: postgres-it
              environment:
                  POSTGRES_USER: postgres
                  POSTGRES_PASSWORD: postgres
                  POSTGRES_DB: user
      

      【讨论】:

        猜你喜欢
        • 2019-12-23
        • 1970-01-01
        • 1970-01-01
        • 2019-10-15
        • 2014-04-07
        • 2021-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多