# Docker's ignore-pattern matching is NOT recursive-by-default the way # .gitignore's is - a bare `node_modules/` only matches a top-level # directory of that name, not apps/web/node_modules. Every pattern below # is prefixed with **/ so it matches at any depth (confirmed by testing: # without **/, `apps/web/node_modules` alone still uploaded ~600MB of # build context that was never actually needed by any Dockerfile). **/.git/ **/.env **/.env.local **/*.pem **/*.key **/__pycache__/ **/*.py[cod] **/*.egg-info/ **/.venv/ **/venv/ **/.pytest_cache/ **/.ruff_cache/ **/.mypy_cache/ **/htmlcov/ **/.coverage **/*.db **/*.sqlite3 **/node_modules/ **/.next/ **/out/ **/dist/ **/build/ **/.turbo/ **/coverage/ **/*.tsbuildinfo **/.eslintcache **/test-results/ **/playwright-report/ **/playwright/.cache/ **/.claude/ **/.vscode/ **/.idea/ **/*.log **/logs/