docker fix
This commit is contained in:
80
docs/docker_fix.md
Normal file
80
docs/docker_fix.md
Normal file
@@ -0,0 +1,80 @@
|
||||
# Решение проблемы с 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"
|
||||
```
|
||||
Reference in New Issue
Block a user