Pierwsze polecenie (samo php artisan migrate) to złe podejście, ponieważ wywołujesz je wtedy na swoim lokalnym systemie, na lokalnej wersji PHP, a to może powodować różne problemy - różnice między wersjami z tym co jest w Dockerze, brak widoczności bazy danych itd. Poprawny kierunek to drugie, gdzie wykonujesz polecenie php artisan migrate w kontenerze Dockera o nazwie php. Odkomentowanie ręcznie rozszerzenia prawdopodobnie nie ma sensu, ponieważ jak widzę w obrazie instalowane i uruchamiane jest już rozszerzenie pdo_mysql, dokładnie tutaj.
Zerknąłbym na konfigurację połączenia bazy w Laravelu, w teorii w docker-compose.yml ustawiane są zmienne środowiskowe z tymi danymi (od tego miejsca), ale sprawdziłbym czy masz plik .env z Laravela, jeśli tak czy te wartości są dobre, czy na pewno nie zmieniałeś żadnej z nich, generalnie czy dane dostępowe które widzi Laravel się zgadzają ze stanem faktycznym, bo po screenach zdaje się, jakby jednak nie było - masz tam 127.0.0.1 jako hosta, usera root itd.
Możesz też dla pewności sprawdzic logi po wykonaniu docker compose up - jeśli wykonałeś bez flagi -d to będą na tym samym terminalu, jeśli nie to można je podejrzeć np. przez docker compose logs. Zerknij tam czy baza (kontener db) na pewno się uruchomiła, czy nie pojawił się jakiś błąd itd. Ewentualnie można użyć np. docker ps aby sprawdzić jakie kontenery teraz działają. Można też spróbować ręcznie połączyć się z poziomu konsoli kontenera db do bazy danych (bez PHP czy Laravela), aby sprawdzić czy wprowadzone do Laravela dane faktycznie działają i baza odpowiada - docker compose exec db mysql -h db -u phper -p laravel - mniej więcej tak mogłoby to wyglądać, ale napisałem z głowy, więc musisz sprawdzić :)