当前位置: 首页 > 知识库问答 >
问题:

无法连接到测试容器Postgres实例

刁丰羽
2023-03-14

我已经使用testcontainers创建了一个Postgres实例。容器启动了,但我无法访问它。

我已经尝试使用DBeaver在容器化数据库中连接。在eclipse控制台中,一切似乎都很好:

01:29:34.662[主]调试com.github.多克雅娃。果心命令AbstrDockerCmd-Cmd:com.github.多克雅娃。果心命令CreateContainerCmdImpl@73386d72[name=,hostName=,domainName=,user=,attachStdin=,attachStdout=,attachStderr=,portSpecs=,tty=,stdinOpen=,stdInOnce=,env={POSTGRES_user=test,POSTGRES_PASSWORD=test,POSTGRES_DB=ASIGDB_test}

这是我的代码:

public class CustomPostgresContainer extends PostgreSQLContainer<CustomPostgresContainer>{
    private static final String IMAGE_VERSION = "postgres:9.6";
    private static CustomPostgresContainer customPostgresContainer;
    private static final int EXPOSED_PORT = 5555;
    private static final String DB_NAME = "ASIGDB_TEST";
    private static final String DB_USER= "test";
    private static final String DB_PASSWORD= "test";


    public CustomPostgresContainer() {
        super(IMAGE_VERSION);
    }

    public static CustomPostgresContainer getCustomPostgresContainerInstance() {
        if(customPostgresContainer == null) {
            return extracted().withExposedPorts(EXPOSED_PORT)
                                                .withDatabaseName(DB_NAME)
                                                .withUsername(DB_USER)
                                                .withPassword(DB_PASSWORD);
        }

        return customPostgresContainer;
    }

    private static CustomPostgresContainer extracted() {
        return new CustomPostgresContainer();
    }

    @Override
    public void start() {
        super.start();
    }

    @Override
    public void stop() {
        //do nothing, JVM handles shut down
    }
}

我得到:

与本地主机的连接:5555被拒绝。检查主机名和端口是否正确,邮政局长是否接受TCP/IP连接。

有人知道是怎么回事吗?

共有1个答案

唐晗昱
2023-03-14

根据这个链接,with ExposedPorts()--

Integer firstMappedPort = container.getMappedPort(yourExposedPort);<br/>

尝试将DBeaver连接到第一个出现的端口。

 类似资料:
  • 相关帖子:1)docker postgres pgadmin本地连接 2)https://coderwall.com/p/qsr3yq/postgresql-with-docker-on-os-x(在示例中没有填写“name”条目) 有两种方法来完成这个任务,我使用正式的postgres 方法一: 并使用 然后使用pgAdmin选项卡属性填充信息连接

  • 我正在使用Windows上的Docker来使用本地的postgres数据库。我制作了两个docker容器:一个用于名为pg的数据库,另一个用于名为pgadmin的pgadmin4。检查完pg后,我在172.17.0.3:5432连接了pgadmin4,它工作了。现在该编码了,但是... 我读了很多这样的问题,但我不明白。在我看来,这不像pg_hba中产生的问题。conf,因为在这种情况下,pgad

  • 在我做了和之后,我的postgres遇到了一些问题。我试着卸载postgres并重新安装它,但它并没有那么好用。 这就是我所做的: 现在,在我重新安装homebrew之后,当我使用时,它不显示任何错误消息。 但是我在我的Rails应用程序中运行,它显示: 更新 这对我也管用。

  • 我正试图从PHP容器连接到容器化的MySQL数据库,虽然同一网络上的所有容器都是如此,但问题是,当我点击

  • 我已经创建了一个MySQL数据库的映像,并在容器中运行它。我希望它在端口3406/3407上运行,因此我调用docker run命令如下所示: 如果我看我的容器,它看起来是这样的: 我非常想连接到我的数据库现在,但我似乎不能使我的URL工作。 这是我的URL的样子:

  • 问题内容: 我有用于创建mysql映像的docker- compose文件,并将端口公开给3306,但是当我尝试安装CMS时,出现了无法连接数据库的错误。我尝试扫描端口3306,并向我显示它已打开,因此mysql正在运行。 为什么两个Docker容器彼此看不到? 这是我的docker-compose文件: 问题答案: 要连接到数据库,请使用您作为主机名提供的链接/别名。因此,您的CMS可以使用主机