Deployment

Production is on heaviside.emfcamp.org.

First install

This is done after each event, following a clear of the database:

docker compose -f ./docker-compose.environment.yml up -d
docker compose -f ./docker-compose.environment.yml exec app uv run flask db upgrade
docker compose -f ./docker-compose.environment.yml exec app uv run flask create_perms
docker compose -f ./docker-compose.environment.yml exec app uv run flask cfp create_venues
docker compose -f ./docker-compose.environment.yml exec app uv run flask cfp create_tags

Periodic tasks need to be triggered by calling flask periodic - this can be done in the root crontab:

*/2 * * * * /srv/docker/Website/docker-compose exec app uv run flask periodic > /dev/null 2>&1

Deployments

Deployments run automatically when a new container is built by Github Actions and pushed to Github Container Registry. This is done using Watchtower.

If there are any DB migrations which need to be applied, you still need to manually run:

docker compose -f /root/Website/docker-compose.prod.yml exec app uv run flask db upgrade

or, if the app won’t start:

docker compose -f /root/Website/docker-compose.prod.yml run --rm --entrypoint=uv app run flask db upgrade

Admin Commands

Admin commands can be listed with:

docker-compose -f /root/Website/docker-compose.prod.yml exec app uv run flask