Refactor: Multi-stage Docker build for app image #2392
+40
−17
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #2389.
Fixes the issue with the dynamic version calculation being incorrect, because of a dirty git index during Docker build time / pip install time.
There's no reason to have the .git directory in the app image, same with all the extra files, tests, .devcontainer, etc.
Uses the approach from eligibility-server: https://github.com/cal-itp/eligibility-server/blob/main/Dockerfile
How to test
git tag -a 2024.09.99
docker compose build --no-cache client
to rebuild the app imagedocker compose up -d client
to start a new app containerdocker compose exec -ti client /bin/bash
to connect to running containerpython manage.py shell
to enter a Django shell with settings loadedimport benefits; print(benefits.VERSION)
✅bin/rebuild.sh
to rebuild the devcontainer