hackforla / hackforla/HomeUniteUs

Run database migrations in docker container

Open
#608 1 comment 0 reactions 0 assignees View on GitHub
Complexity: Large dependency Feature: Architecture Role: Back End Role: DevOps size: 2pt
Dominant language
Python
Stars
45
Forks
22
Avg merge
15d 1h
Merged PRs (30d)
1

Description

## Dependencies
- [From Tyler in comments:](https://github.com/hackforla/HomeUniteUs/issues/608#issuecomment-2136272250) Recommend moving to ice box until Incubator integration established, the parameters for this solution will hinge on implementation details coordinated with ops/incubator admins
#

### Overview

The API [`alembic`](https://alembic.sqlalchemy.org/en/latest/) 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

- [ ] Study [`alembic`](https://alembic.sqlalchemy.org/en/latest/) database migration tool and where database migration scripts are stored in the API code.
- [ ] Update `Dockerfile` as necessary to perform database migrations in the Postgres database container.
- [ ] If necessary update `README` files.

### 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/

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.