.PHONY: down build up logs shell lock migrate migration import-dictionary run-prod-locally build-dev: docker compose -f docker-compose-dev.yml --env-file .env build --no-cache build-prod: docker compose -f docker-compose-prod.yml --env-file .env build --no-cache up-dev: docker compose -f docker-compose-dev.yml --env-file .env up -d up-prod: docker compose -f docker-compose-prod.yml --env-file .env.prod up -d run-prod-locally: docker compose -f docker-compose-prod.yml -f docker-compose-local-override.yml --env-file .env.prod build && \ docker compose -f docker-compose-prod.yml -f docker-compose-local-override.yml --env-file .env.prod up down: docker compose down down-dev: docker compose -f docker-compose-dev.yml down logs-dev: docker compose -f docker-compose-dev.yml logs -f logs-prod: docker compose -f docker-compose-prod.yml logs -f shell: docker compose exec api bash # Run pending migrations against the running db container migrate: docker compose build api --no-cache && docker compose up -d && docker compose exec api alembic upgrade head migrate-no-build: docker compose exec api alembic upgrade head # Generate a new migration: make migration NAME="add foo table" migration: docker compose exec api alembic revision --autogenerate -m "$(NAME)" # Generate a pinned requirements.txt from pyproject.toml (requires uv installed locally) lock: cd api && uv pip compile pyproject.toml -o requirements.txt rebuild: down build up # Import a kaikki dictionary JSONL into Postgres. # Requires the DB to be running with its port exposed on localhost (docker compose up). # DATABASE_URL defaults to the docker-compose dev credentials. # Usage: make import-dictionary lang=fr import-dictionary: cd api && uv run ./scripts/import_dictionary.py --lang $(lang)