一个docker中的网络问题与keycloak和tomcat容器组成

时间:2017-04-07 17:58:51

标签: docker-compose

问候语,

我是初学者正在学习网络身份验证,并希望在docker compose中尝试使用tomcat和keycloak。我将它们放在一个docker-compose.yml中,如下所示:

version: '2'

services:
    postgres:
        image: postgres
        ports:
            - "5432:5432"
        environment:
            POSTGRES_DATABASE: 'keycloak'
            POSTGRES_USER: 'keycloak'
            POSTGRES_PASSWORD: 'keycloak'
            POSTGRES_ROOT_PASSWORD: 'test'
        volumes:
            - ./postgres:/mnt/shares/postgres
    keycloak:
        image: jboss/keycloak-postgres
        ports:
            - "800:8080"
        links:
            - postgres
        environment:
            POSTGRES_PORT_5432_TCP_ADDR: 'postgres'
            POSTGRES_DATABASE: 'keycloak'
            POSTGRES_USER: 'keycloak'
            POSTGRES_PASSWORD: 'keycloak'
            KEYCLOAK_USER: 'admin'
            KEYCLOAK_PASSWORD: 'admin'
            POSTGRES_ROOT_PASSWORD: 'test'
        depends_on:
            - postgres
        volumes:
            - ./keycloak:/mnt/shares/keycloak
    tomcat_keycloak:
        build: .
        ports:
            - "880:8080"
        volumes:
            - ./web:/mnt/shares/web
            - ./scratches:/mnt/shares/scratches

这可以推出。接下来,我在keycloak中创建了领域,客户端和用户,获得了tomcat的keycloak.json,如下所示:

{
    "realm": "TestRealm",
    "auth-server-url": "http://192.168.208.130:800/auth",
    "ssl-required": "external",
    "resource": "test-client",
    "public-client": true,
    "use-resource-role-mappings": true
}

其中192.168.208.130是我的主机IP地址。然后我在我的tomcat服务器上尝试了一个静态Web链接。我可以被重定向到keycloak登录页面。但是在输入用户名和密码后,我获得了HTTP状态403.在keycloak事件中,我看到登录成功,并建立了会话。我检查了tomcat输出,然后找到了以下内容:

07-Apr-2017 17:37:04.240 INFO [http-apr-8080-exec-4] org.apache.http.impl.client.DefaultHttpClient.tryConnect I / O异常(java.net.NoRouteToHostException)被捕获连接到{} - > http://192.168.208.130:800时:无主机路由(主机无法访问)

从我的tomcat容器看起来,我无法通过主机IP地址中的URL与我的keycloak服务器容器建立HTTP客户端连接。我可以从tomcat容器ping主机ip。

你能帮我找一下我在这个配置中缺少的东西吗?真的很感激。

0 个答案:

没有答案