postgresql - docker-compose 与 keycloak 和 postgres

标签 postgresql docker docker-compose keycloak

我正在使用 docker-compose,并尝试将其部署在 VPS Centos 8 上,但 keycloak 无法访问 postgres 数据库。 不过我可以使用 pgAdmin 连接到数据库。

我有以下错误:

    Caused by: java.net.NoRouteToHostException: No route to host (Host unreachable)
            at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
            at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
            at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
            at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
            at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
            at java.base/java.net.Socket.connect(Socket.java:609)
            at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="016e73662f716e727566736472706d2f6b6563624135332f332f34" rel="noreferrer noopener nofollow">[email protected]</a>//org.postgresql.core.PGStream.<init>(PGStream.java:70)
            at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="cda2bfaae3bda2beb9aabfa8bebca1e3a7a9afae8df9ffe3ffe3f8" rel="noreferrer noopener nofollow">[email protected]</a>//org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:91)
            at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="46293421683629353221342335372a682c22242506727468746873" rel="noreferrer noopener nofollow">[email protected]</a>//org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192)
            ... 62 more
    
    13:34:55,281 FATAL [org.keycloak.services] (ServerService Thread Pool -- 65) java.lang.RuntimeException: Failed to connect to database

    13:34:56,307 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([("subsyste                                                                                                                                         m" => "microprofile-metrics-smallrye")]): java.lang.NullPointerException
            at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d5baa7b2fba2bcb9b1b3b9acfbb0ada1b0bba6bcbabbfbb8bcb6a7baa5a7bab3bcb9b0fbb8b0a1a7bcb6a6f8a6b8b4b9b9a7acb095e4ecfbe4fbe5fb93bcbbb4b9" rel="noreferrer noopener nofollow">[email protected]</a>//org.wildfly.extension.microprofile.metrics.MicroProfileMetricsSubsystemAdd$                                                                                                                                         2.execute(MicroProfileMetricsSubsystemAdd.java:86)
            at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0a65786d246068657979246b79246965647e786566666f784a3b3b243b243b244c63646b66" rel="noreferrer noopener nofollow">[email protected]</a>//org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:999)
            at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="107f62773e7a727f63633e71633e737f7e64627f7c7c75625021213e213e213e56797e717c" rel="noreferrer noopener nofollow">[email protected]</a>//org.jboss.as.controller.AbstractOperationContext.processStages(AbstractOperationContext.java:743)
            at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b9d6cbde97d3dbd6caca97d8ca97dad6d7cdcbd6d5d5dccbf988889788978897ffd0d7d8d5" rel="noreferrer noopener nofollow">[email protected]</a>//org.jboss.as.controller.AbstractOperationContext.executeOperation(AbstractOperationContext.java:467)
            at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="abc4d9cc85c1c9c4d8d885cad885c8c4c5dfd9c4c7c7ced9eb9a9a859a859a85edc2c5cac7" rel="noreferrer noopener nofollow">[email protected]</a>//org.jboss.as.controller.OperationContextImpl.executeOperation(OperationContextImpl.java:1413)
            at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="ea85988dc48088859999c48b99c48985849e988586868f98aadbdbc4dbc4dbc4ac83848b86" rel="noreferrer noopener nofollow">[email protected]</a>//org.jboss.as.controller.ModelControllerImpl.boot(ModelControllerImpl.java:527)
            at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d1bea3b6ffbbb3bea2a2ffb0a2ffb2bebfa5a3bebdbdb4a391e0e0ffe0ffe0ff97b8bfb0bd" rel="noreferrer noopener nofollow">[email protected]</a>//org.jboss.as.controller.AbstractControllerService.boot(AbstractControllerService.java:515)
            at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d8b7aabff6b2bab7ababf6b9abf6bbb7b6acaab7b4b4bdaa98e9e9f6e9f6e9f69eb1b6b9b4" rel="noreferrer noopener nofollow">[email protected]</a>//org.jboss.as.controller.AbstractControllerService.boot(AbstractControllerService.java:477)
            at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c7a8b5a0e9ada5a8b4b4e9a6b4e9b4a2b5b1a2b587f6f6e9f6e9f6e981aea9a6ab" rel="noreferrer noopener nofollow">[email protected]</a>//org.jboss.as.server.ServerService.boot(ServerService.java:448)
            at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="16796471387c74796565387765386573646073645627273827382738507f78777a" rel="noreferrer noopener nofollow">[email protected]</a>//org.jboss.as.server.ServerService.boot(ServerService.java:401)
            at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7e110c1950141c110d0d501f0d501d11100a0c1112121b0c3e4f4f504f504f503817101f12" rel="noreferrer noopener nofollow">[email protected]</a>//org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:416)
            at java.base/java.lang.Thread.run(Thread.java:834)

这是我的 docker-compose.yml :

    version: "3.7"
    
    services: 
    
      keycloak: 
        container_name: app-keycloak
        depends_on: 
          - postgres
        environment: 
          # Admin account
          KEYCLOAK_USER: foo
          KEYCLOAK_PASSWORD: foo
          #KEYCLOAK_IMPORT: /tmp/realm-export.json
           
          # PostgreSQL DB settings
          DB_VENDOR: POSTGRES
          DB_ADDR: postgres
          DB_PORT: 5432
          DB_DATABASE: foo
          DB_SCHEMA: public
          DB_USER: foo
          DB_PASSWORD: foo
        image: "jboss/keycloak:10.0.2"
        ports: 
          - "9999:8080"
        restart: always
        networks:
          - auth-network
    
      postgres: 
        container_name: app-postgres
        environment: 
          POSTGRES_DB: foo
          POSTGRES_PASSWORD: foo
          POSTGRES_USER: foo
        image: "postgres:13-alpine"
        ports: 
          - "5432:5432"
        restart: always
        volumes: 
          - "./volumes/postgres-data:/var/lib/postgresql/data"
        networks:
          - auth-network
    
    networks:   auth-network:
        driver: bridge

您对如何解决这个问题有什么想法吗?

最佳答案

对于我的 Windows 10 PC,该解决方案有效,但我的 VPS 上仍然存在这些错误 Centos 8. 你还有其他想法吗?

firewall-cmd --zone=public --list-all

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: cockpit dhcpv6-client https ssh
  ports: 8077/tcp 27017/tcp 8081/tcp 9999/tcp 5432/tcp 8443/tcp 8080/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

关于postgresql - docker-compose 与 keycloak 和 postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63035855/

相关文章:

docker - 使用与主机发送请求相同的网络从Docker容器发送HTTP请求

docker - Docker在另一个目录中撰写会影响其他容器

生产中的 Docker,源数据,数据库数据,更新过程

sql - 在 INSERT ("missing FROM-clause entry"上使用 WITH 时出现问题)

sql - 计算 1 <-> 1..n 中最常见的值 | 0..N <-> 1 在一次查询中

java - Spring 数据存储库将 null 作为 bytea 发送到 PostgreSQL 数据库

azure - 无法使用SSL通过Nginx实现与redis容器的安全连接

sql - 获取上一行值

java - 进程关闭后可以打开自定义 hsperfdata_root/PID 吗?

docker - 点和冒号的含义