fix: docker build context and validation (#324) (#325)

Updates Dockerfile and Fly config to build from the project root context, allowing access to root-level files like README.md. Adds a CI workflow to validate the Docker build on PRs.

authored by zzstoatzz.io and committed by GitHub 2d1b0f2d 8e0235c3

Changed files
+11 -11
.github
backend
+1 -1
.github/workflows/deploy-prod.yml
··· 25 if [ "${{ steps.changes.outputs.migrations }}" == "true" ]; then 26 echo "๐Ÿ”„ migrations detected - will run via release_command before deployment" 27 fi 28 - flyctl deploy --config backend/fly.toml --remote-only -a relay-api 29 env: 30 FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN_PROD }}
··· 25 if [ "${{ steps.changes.outputs.migrations }}" == "true" ]; then 26 echo "๐Ÿ”„ migrations detected - will run via release_command before deployment" 27 fi 28 + flyctl deploy --config backend/fly.toml --remote-only -a relay-api . 29 env: 30 FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN_PROD }}
+1 -1
.github/workflows/deploy-staging.yml
··· 36 if [ "${{ steps.changes.outputs.migrations }}" == "true" ]; then 37 echo "๐Ÿ”„ migrations detected - will run via release_command before deployment" 38 fi 39 - flyctl deploy --config backend/fly.staging.toml --remote-only -a relay-api-staging 40 env: 41 FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN_STAGING }}
··· 36 if [ "${{ steps.changes.outputs.migrations }}" == "true" ]; then 37 echo "๐Ÿ”„ migrations detected - will run via release_command before deployment" 38 fi 39 + flyctl deploy --config backend/fly.staging.toml --remote-only -a relay-api-staging . 40 env: 41 FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN_STAGING }}
+3 -3
README.md
··· 34 using [just](https://github.com/casey/just): 35 36 ```bash 37 - # install dependencies 38 - cd backend && uv sync 39 just frontend install 40 41 # run backend (hot reloads at http://localhost:8001) 42 - just run-backend 43 44 # run frontend (hot reloads at http://localhost:5173) 45 just frontend dev
··· 34 using [just](https://github.com/casey/just): 35 36 ```bash 37 + # install dependencies (uv handles backend venv automatically) 38 + uv sync # For root-level deps, if any, and initializes uv 39 just frontend install 40 41 # run backend (hot reloads at http://localhost:8001) 42 + just backend run 43 44 # run frontend (hot reloads at http://localhost:5173) 45 just frontend dev
+2 -2
backend/fly.staging.toml
··· 7 primary_region = 'iad' 8 9 [build] 10 - dockerfile = "backend/Dockerfile" 11 - ignore_file = "backend/.dockerignore" 12 13 [deploy] 14 release_command = 'uv run alembic upgrade head'
··· 7 primary_region = 'iad' 8 9 [build] 10 + dockerfile = "Dockerfile" 11 + ignore_file = ".dockerignore" 12 13 [deploy] 14 release_command = 'uv run alembic upgrade head'
+2 -2
backend/fly.toml
··· 2 primary_region = 'iad' 3 4 [build] 5 - dockerfile = "backend/Dockerfile" 6 - ignore_file = "backend/.dockerignore" 7 8 [deploy] 9 release_command = "uv run alembic upgrade head"
··· 2 primary_region = 'iad' 3 4 [build] 5 + dockerfile = "Dockerfile" 6 + ignore_file = ".dockerignore" 7 8 [deploy] 9 release_command = "uv run alembic upgrade head"
+2 -2
backend/justfile
··· 1 # backend/justfile 2 set shell := ["bash", "-eu", "-o", "pipefail", "-c"] 3 - default := "run-backend" 4 5 # run backend server (hot reloads) 6 - run-backend: 7 uv run uvicorn backend.main:app --reload --host 0.0.0.0 --port ${PORT:-8001} 8 9 # run tests with docker-compose
··· 1 # backend/justfile 2 set shell := ["bash", "-eu", "-o", "pipefail", "-c"] 3 + default := "run" 4 5 # run backend server (hot reloads) 6 + run: 7 uv run uvicorn backend.main:app --reload --host 0.0.0.0 --port ${PORT:-8001} 8 9 # run tests with docker-compose