Проблема, с которой вы столкнулись, может быть связана с несколькими факторами. Давайте рассмотрим несколько аспектов, которые могут помочь решить вашу проблему:
1. **Сетевые настройки в Docker Compose**:
Убедитесь, что контейнеры находятся в одной сети, чтобы они могли видеть друг друга по имени. В вашем примере `keycloak` и `post_service` имеют определенные сети, но вы не указали явным образом, в какой сети должен находиться `keycloak`. Добавьте их в одну сеть:
```yaml
networks:
keycloak_network:
driver: bridge
posts_postgres_network:
driver: bridge
services:
keycloak:
...
networks:
- keycloak_network
post_service:
...
networks:
- keycloak_network
- posts_postgres_network
```
2. **Использование правильного URL**:
Убедитесь, что в вашем конфиге вы используете правильный URL. Поскольку Keycloak работает на внутреннем порту 8080, вызывайте его с помощью `http://keycloak:8080/realms/keycloak-auth/.well-known/openid-configuration`.
3. **Проверка порядка запуска**:
Использование `depends_on` гарантирует только порядок запуска, но не гарантирует, что сервис будет готов к приему запросов. Возможно, Keycloak просто еще не запустился, когда ваш `post_service` пытается его вызвать. Для решения этой проблемы вы можете добавить механизм ожидания (например, использовать `wait-for-it.sh` или аналогичный скрипт).
4. **Проверка наличия служебного имени**:
Убедитесь, что внутри вашего контейнера `post_service` вы можете разрешить имя `keycloak`. Вы можете сделать это, запустив временный контейнер с `bash` и используя команду `ping` или `curl` для проверки доступности Keycloak:
```bash
docker-compose run --rm post_service sh -c "ping keycloak"
```
5. **Логи и диагностика**:
Проверьте логи вашего контейнера Keycloak, чтобы убедиться, что он запустился без ошибок. Это можно сделать с помощью команды:
```bash
docker-compose logs keycloak
```
Если после всех этих проверок проблема сохраняется, предоставьте, пожалуйста, дополнительные сведения, такие как логи контейнеров или дополнительные настройки, которые могут быть полезны для диагностики.