Помочь с настройкой Docker (python: fastapi + alembic; postgresql)

  • Опубликовано 1 год назад
  • Просмотры 14
  • Закончить проект

Описание

Есть приложение, написанное на Python (FastApi),которое должно быть упаковано в докер.
Внутри приложения используется alembic для управления миграциями БД и первичного создания таблиц в БД (postgresql).

Суть заказа – помочь с донастройкой докера, поскольку:
Сейчас есть проблема – запущенный образ докера не подключается к БД, которая тоже в докер контейнере (порты проброшены, но вылетает ошибка таймаута соединения). При этом проверка соединения через terminal работает успешно. Переменные окружения тоже подтягиваются.
По срокам – ASAP, до 15:00 понедельника.

Структура исходного проекта:
Project/
├─Dockerfile
├─docker-compose.yml
├─requirements.txt
├─.env.docker
├─app/

│ ├─ main.py

│ ├─ handlers/...
│ ├─ db/...

Уже есть один вариант, который срабатывает, однако там слетают абсолютные пути. В проекте много где встречается что-то вроде from app.db.db import..),и вылетает ошибка:
app_1 | from app.handlers.users import router as users_router
app_1 | ModuleNotFoundError: No module named 'app'
А еще нужно учесть, что базовый образ строго зафиксирован. Изменять образ в директиве FROM нельзя.

Отдельный пункт, который нужно учесть – запуск миграций alembic при старте контейнера для проверки соответствия структуры таблиц. И здесь нюанс – alembic.ini находится в нестандартной директории (обычно – корень проекта, в данном случае – в /app).
Файлы докера который верны по логике указания абсолютных путей и файлы конфига при котором срабатывает подключение к бд – во вложении.
Суть – сделать Dockerfile и docker-config.yml, чтобы были сохранены абсолютные пути, при этом main.py подключался к БД, и перед этим запускалась команда alembic -c app/alembic.ini upgrade head, тоже успешно подключающаяся к бд.

По оплате – предлагайте.
Буду на связи до 04:30 (могу быть дольше если оперативно сделаем) и с 10:00. В идеале – к 15:00 понедельника (сегодня) запустить, чтобы заработало.

Опубликовано 1 год назад