У меня есть docker-compose, содержащий Keycloak и Mailhog. Я настроил Mailhog в Keycloak, но он не работает. Я попробовал MailHog в Powershell, он работает. Может ли кто-нибудь помочь мне понять, почему это не работает?
Шаг настройки Mailhog на Keycloak:
когда я нажимаю «Проверить соединение», появляется сообщение об ошибке «Ошибка! Не удалось отправить электронное письмо». Но я пытаюсь отправить электронное письмо, используя приведенный ниже cmd, он работает.
Send-MailMessage -To "[email protected]" -From "[email protected]" -Subject "Test email1" -SmtpServer "localhost" -Port 1025
Докер создает файл
version: '3.6'
services:
mailhog-keycloak:
image: mailhog/mailhog
container_name: mailhog
logging:
driver: 'none' # disable saving logs
ports:
- 1025:1025 # smtp server
- 8025:8025 # web ui
networks:
- dev_network
postgres-keycloak:
image: postgres:9.6-alpine
container_name: postgres
environment:
POSTGRES_DB: keycloak
POSTGRES_USER: keycloak
POSTGRES_PASSWORD: password
networks:
- dev_network
keycloak:
image: jboss/keycloak:10.0.2
container_name: keycloak_10
environment:
DB_VENDOR: POSTGRES
DB_ADDR: postgres
DB_DATABASE: keycloak
DB_USER: keycloak
DB_PASSWORD: password
KEYCLOAK_USER: admin
KEYCLOAK_PASSWORD: admin
ports:
- 8080:8080
external_links:
- postgres
volumes:
- ./themes/keycloak:/opt/jboss/keycloak/themes/shoping
- postgres-keycloak
networks:
- dev_network
networks:
dev_network:
Проблема в localhost
- у каждого контейнера есть собственное пространство имен, поэтому у каждого контейнера есть собственное localhost
, которое не зависит от других локальных хостов контейнера.
Используйте mailhog
(возможно mailhog-keycloak
) вместо localhost
в поле Host
— это имя контейнера/службы, которое должно разрешать текущий IP-адрес почтового контейнера, поэтому он должен работать.
Присоединение к вечеринке немного запоздало, но как я могу узнать имя хоста? Ни mailhog, ни mailhog-keycloak у меня не работают..
@Oliver Это имя / идентификатор вашего почтового сервиса, то есть ключ в services
.
Убедитесь, что keycloak и mailhog находятся в одной сети на докере.
Итак, какое решение вы хотите внести? Пожалуйста, попробуйте Как ответить.
Ваша конфигурация докера выглядит нормально. Сама ошибка связана с конфигурацией электронной почты keycloak.
Как и в утвержденном ответе, контейнеры докеров имеют свои собственные локальные хосты.
Поскольку mailhog
и ваш экземпляр keycloak
являются док-контейнерами, я бы предложил использовать host.docker.internal
в качестве адреса хоста.
Порт остается 1025
.
Я подтверждаю, что
mailhog
является правильным доменным именем для использования