Судя по описанным вами ошибкам и конфигурации, проблема заключается в аутентификации пользователя `admin` в PostgreSQL. Давайте рассмотрим возможные причины и решения.
### Причины ошибки
1. **Неверные учетные данные**: Убедитесь, что пользователь `admin` действительно существует в базе данных PostgreSQL и имеет правильный пароль (`root`). Ваша переменная `password` в файле `config` установлена в `root`, что выглядит правильно.
2. **Пользователь не создан**: В Docker контейнере, если вы не создали пользователя `admin`, он не будет существовать, и попытка аутентификации будет терпеть неудачу. По умолчанию PostgreSQL создает только пользователя `postgres` с паролем, заданным через переменную окружения `POSTGRES_PASSWORD`.
3. **Неправильные настройки PostgreSQL**: Проверьте, что настройки аутентификации в файле `pg_hba.conf` корректны и позволяют пользователю `admin` подключаться к базе данных.
4. **Состояние базы данных**: Убедитесь, что база данных `postgres` действительно доступна и сервер PostgreSQL работает.
5. **Проблемы с сетью**: Убедитесь, что Docker-контейнер `app` может достичь контейнера `db_auth` по имени сервиса `db_auth`.
### Решения
1. **Создание пользователя**: Если вы хотите использовать пользователя `admin`, вам нужно добавить шаг в конфигурацию базы данных при инициализации контейнера. В вашем `docker-compose.yml` вы можете добавить переменную среды `POSTGRES_USER` для создания пользователя:
```yaml
environment:
- POSTGRES_PASSWORD=root
- POSTGRES_USER=admin
```
При этом вы также можете создать базу данных по умолчанию:
```yaml
- POSTGRES_DB=your_database_name
```
2. **Использование существующего пользователя**: Измените код подключения, чтобы использовать пользователя `postgres` вместо `admin`, если вы не нуждаетесь в создании отдельного пользователя:
```python
user = "postgres"
```
3. **Проверка подключения**: Убедитесь, что ваш Docker контейнер `app` ожидает завершения инициализации базы данных. Возможно, стоит увеличить время ожидания из-за времени, необходимого для создания пользователя и базы данных.
### Пример обновленного файла docker-compose.yml:
```yaml
version: '3.8'
services:
db_auth:
container_name: db_auth
image: postgres:latest
ports:
- "5432:5432"
environment:
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=root
- POSTGRES_DB=postgres
app:
build: ./app
depends_on:
- db_auth
environment:
- DATABASE_URL=postgresql://admin:root@db_auth:5432/postgres
```
Попробуйте внести изменения, перезапустив контейнеры с помощью `docker-compose down` и затем `docker-compose up --build`. Это должно помочь с вашей проблемой.