docker Keycloak:本地主机上Mailhog的电子邮件测试错误-“连接被拒绝”

vecaoik1  于 2022-12-11  发布在  Docker
关注(0)|答案(1)|浏览(309)

我在本地运行了Keycloak和Mailhog的容器。然后我想从Keycloak发送一些测试电子邮件,但我总是收到下面的错误。我已经按照底部所述进行了配置(localhost:1025)并尝试了其他各种事情-不幸的是都没有成功。我还在stackoverflow上找到了一些关于这个主题的问题-不幸的是,那里给出的答案要么没有解决我的问题(changing the hostname),要么我不能真正理解(changing php.ini)。

keycloak-custom-keycloak-1 |  com.sun.mail.util.MailConnectException: Couldn't connect to host, port: localhost, 1025; timeout 10000;
keycloak-custom-keycloak-1 |   nested exception is:
keycloak-custom-keycloak-1 |  java.net.ConnectException: Connection refused (Connection refused)

从我所看到的,我已经配置一切正确,检查是否容器运行与正确的端口,但我仍然得到这个错误。(细节见下文)。
我的docker-compose.yml文件如下所示:

version: '3.3'
services:
  keycloak:
    image: jboss/keycloak #:${KEYCLOAK_VERSION}
    ports:
      - "8080:8080"
    environment:
      - KEYCLOAK_USER=${KEYCLOAK_USER}
      - KEYCLOAK_PASSWORD=${KEYCLOAK_PASSWORD}
      - DB_DATABASE=${KEYCLOAK_DATABASE_NAME}
      - DB_USER=${KEYCLOAK_DATABASE_USER}
      - DB_PASSWORD=${KEYCLOAK_DATABASE_PASSWORD}
      - DB_ADDR=${KEYCLOAK_DATABASE_HOST}
      - DB_VENDOR=${KEYCLOAK_DATABASE_VENDOR}
      - KEYCLOAK_IMPORT=/tmp/realm-export.json
    volumes:
      - ./keycloak/realms/realm-export.json:/tmp/realm-export.json
      - ./keycloak/scripts/disable-theme-cache.cli:/opt/jboss/startup-scripts/disable-theme-cache.cli
      - ./keycloak/themes/gesetzeio:/opt/jboss/keycloak/themes/gesetzeio
    networks:
      internal:
    depends_on:
      - keycloakdb

  keycloakdb:
    image: postgres:${POSTGRES_VERSION}
    ports:
      - "5433:5432"
    environment:
      - POSTGRES_USER=${KEYCLOAK_DATABASE_USER}
      - POSTGRES_PASSWORD=${KEYCLOAK_DATABASE_PASSWORD}
      - POSTGRES_DB=${KEYCLOAK_DATABASE_NAME}
    volumes:
      - keycloak-postgres:/var/lib/postgresql/data
    networks:
      internal:

  mailhog:
    image: mailhog/mailhog:latest
    restart: always
    ports:
      - 1025:1025
      - 8025:8025

volumes:
  keycloak-postgres:

networks:
  internal:

当我启动Mailhog容器时,我在日志中看到以下消息:

2022/12/09 16:12:28 Using in-memory storage

2022/12/09 16:12:28 [SMTP] Binding to address: 0.0.0.0:1025

2022/12/09 16:12:28 Serving under http://0.0.0.0:8025/

[HTTP] Binding to address: 0.0.0.0:8025

在Keycloak中,我输入了以下测试配置:
Screenshot of the Email settings in my local Keycloak container
我进一步尝试了以下选项--或者主机名localhost--

  • 0.0.0.0
  • 127.0.0.1
  • Mailhog容器的名称keycloak-custom-mailhog-1(建议为here

然而,这些方法都不起作用。
我做错了什么?

fnvucqvd

fnvucqvd1#

容器之间的通信需要使用docker合成文件中声明的主机名进行。
这意味着您需要使用主机名mailhog,而不是127.0.0.1(并且0.0.0.0永远不应该工作,因为它只能在绑定时使用,其含义是“此主机的所有可用IP地址”,尽管一些工具127.0.0.1在配置为连接到www.example.com时将使用0.0.0.0)。
但是,为了能够真正访问mailhog,您需要确保它已启动并正在运行,因此您还需要将mailhog添加到keycloakdepends_on中。此外,mailhog容器必须与keycloak位于同一个虚拟网络中,因此您需要将值为internalnetworks添加到mailhog中。

相关问题