81 lines
3.0 KiB
Markdown
81 lines
3.0 KiB
Markdown
# Решение проблемы с 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"
|
||
```
|