Was able to fix by instead doing a cd $APP_DIR prior to starting uvicorn:
ENTRYPOINT cd $APP_DIR && uvicorn $APP_APP --host 0.0.0.0 --port $PORT
A quick uvicorn --help
implies --app-dir option is only relevant on where to load .py files by modifying PYTHONPATH. I'd reckon directories are treated differently