Проблема с сохранением данных в PostgreSQL при использовании Docker на Windows может быть связана с несколькими факторами, особенно при использовании volumes с типом `bind`. Вот что стоит проверить и возможные решения:
1. **Права доступа на директорию**: Убедитесь, что у Docker есть доступ к папке `./docker/postgresdata`. На Windows могут быть проблемы с правами доступа к папкам. Попробуйте выполнить команду PowerShell:
```powershell
Get-Acl .\docker\postgresdata
```
Убедитесь, что текущий пользователь или служба Docker имеет необходимые права (чтение и запись).
2. **Путь к директории**: В Windows для работы с docker может потребоваться использовать полный путь к директории. Попробуйте изменить `source` на полный путь:
```yaml
volumes:
- type: bind
source: /полный/путь/к/docker/postgresdata
target: /var/lib/postgresql/data
```
3. **Обновление Docker for Windows**: Убедитесь, что у вас установлена последняя версия Docker Desktop. Иногда обновления могут включать исправления ошибок, которые могут решить вашу проблему.
4. **Проверка содержимого Volume**: После остановки контейнера проверьте содержимое каталога `./docker/postgresdata`. Если папка пуста, это означает, что данные не сохраняются, и проблема, скорее всего, в настройках монтирования.
5. **Использование других типов Volume**: Вместо `bind` try использование `docker volume create` для создания volume:
```yaml
volumes:
- postgres_data:/var/lib/postgresql/data
volume:
postgres_data:
```
Использование Docker volumes вместо bind mount может решить проблему сохранения данных.
6. **Конфигурация Docker**: Убедитесь, что настройки Docker правильно настроены для использования WSL 2 (если вы используете его). Вы можете проверить это в настройках Docker Desktop under `Settings` -> `General`.
7. **Логи контейнера**: Посмотрите логи контейнера, чтобы увидеть, нет ли там ошибок. Вы можете выполнить следующую команду:
```bash
docker logs postgres-db
```
Если ни одно из вышеперечисленного не решает проблему, пожалуйста, предоставьте больше информации о конфигурации системы, возможных сообщениях об ошибках или других симптомах, которые вы наблюдаете.