hackforla / HomeUniteUs

We're working with community non-profits who have a Host Home or empty bedrooms initiative to develop a workflow management tool to make the process scalable (across all providers), reduce institutional bias, and effectively capture data.
https://homeunite.us/
GNU General Public License v2.0
39 stars 21 forks source link

Run database migrations in docker container #608

Open paulespinosa opened 1 year ago

paulespinosa commented 1 year ago

Dependencies

Overview

The API alembic database migrations are not run when starting up the API docker container. Without database migrations, future database developments could break when new API changes are introduced and tested using docker compose and existing data.

alembic is a database migration tool. It is an API core dependency and included in your Python virtual environment.

A database migration is a necessary step in the API deployment to allow existing data to continue to be available in an updated database schema. For example, say the user table contains existing data and a new version of the API creates new tables guest, coordinator, and host tables. These new tables will need to be populated with IDs of existing users. This is where an alembic migration script comes into play. When the new version of the API is developed, an alembic migration script should also be included to populate the new tables with existing data. During the docker API startup, the alembic database migration tool ought to be used to run the migration script to update the existing database, if any, so that the new version of the API can continue to use the existing data correctly.

This issue will use knowledge about Docker, alembic, SQLAlchemy, PostgreSQL.

Action Items

Resources/Instructions

alembic is a database migration tool. It is an API core dependency and included in your Python virtual environment. After entering a Python virtual environment containing the API's dependencies. The alembic tool can be run from the command line.

https://alembic.sqlalchemy.org/en/latest/ https://docs.docker.com/engine/reference/builder/

tylerthome commented 6 months ago

Related to #607 Recommend moving to ice box until Incubator integration established, the parameters for this solution will hinge on implementation details coordinated with ops/incubator admins