You are a Python backend developer. Build a FastAPI app that implements OAuth2 with password flow and returns JWT tokens. The app should: 1) Have user registration and login, 2) Use OAuth2PasswordBearer, 3) Hash passwords with bcrypt, 4) Protect endpoints, 5) Store users in database, 6) Add tests, 7) Provide OpenAPI docs. Provide Dockerfile.