Files
tg_tinder_bot/docs/docker_fix.md
2025-09-18 16:47:07 +09:00

81 lines
3.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Решение проблемы с Docker-контейнерами
## Проблема
При запуске контейнеров через Docker Compose возникает ошибка `KeyError: 'ContainerConfig'`. Эта ошибка появляется из-за несовместимости между версиями Docker, Docker Compose и структурой docker-compose.yml.
## Решение
### 1. Очистка окружения Docker
На сервере выполните следующие команды, чтобы полностью очистить окружение Docker:
```bash
# Остановка и удаление контейнеров
docker-compose down -v
# Принудительное удаление контейнеров по имени
docker rm -f postgres-tinder adminer-tinder telegram-tinder-bot
# Очистка неиспользуемых томов и сетей
docker system prune -f --volumes
# Очистка кеша Docker
docker builder prune -f
```
### 2. Исправление проблем с переносами строк
Файлы, созданные в Windows и перенесенные в Linux, могут содержать неправильные символы переноса строки.
```bash
# Исправление переносов строк в shell-скриптах
find . -name "*.sh" -type f -exec sh -c 'tr -d "\r" < "$1" > "$1.fixed" && mv "$1.fixed" "$1" && chmod +x "$1"' -- {} \;
```
### 3. Обновление docker-compose.yml
Создайте новый docker-compose.yml с исправленной структурой:
```bash
# Запустите скрипт для исправления проблем с Docker
./bin/fix_docker.sh
```
### 4. Запуск с полностью чистым окружением
После выполнения всех исправлений запустите контейнеры заново:
```bash
docker-compose up -d
```
## Альтернативное решение
Если проблема сохраняется, можно попробовать запустить контейнеры по отдельности:
```bash
# Сначала запустить базу данных (если она нужна)
docker-compose up -d db
# Дождаться запуска базы данных
sleep 10
# Запустить бота
docker-compose up -d bot
# Запустить adminer
docker-compose up -d adminer
```
## Проверка работы миграций
После запуска контейнеров проверьте, что миграции базы данных применяются правильно:
```bash
# Просмотр логов контейнера бота
docker logs telegram-tinder-bot
# Если миграции не применяются, можно запустить их вручную внутри контейнера
docker exec -it telegram-tinder-bot sh -c "DATABASE_URL=postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_NAME npx node-pg-migrate up"
```