環境
- Docker 20.10.5
 - Laravel 8.42.1
 - PHP 8.0.6
 - Xdebug 3.0.4
 
前提
- vscode使用
 - 拡張機能「PHP Debug」導入済み
 - Xdebug以外の環境は構築済み
 
手順
- Xdebugの導入
 - php.iniの編集
 - launch.jsonの編集
 - 動作確認
 
Xdebugの導入
phpのDockerfileに以下のように記述
FROM php:8.0-fpm-buster
SHELL ["/bin/bash", "-oeux", "pipefail", "-c"]
ENV COMPOSER_ALLOW_SUPERUSER=1 \
COMPOSER_HOME=/composer
COPY --from=composer:2.0 /usr/bin/composer /usr/bin/composer
RUN apt-get update && \
apt-get -y install git unzip libzip-dev libicu-dev libonig-dev && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
docker-php-ext-install intl pdo_mysql zip bcmath
RUN pecl install xdebug \ //↑のRUNとまとめるとエラーが出るので分割
&& docker-php-ext-enable xdebug
COPY php.ini /usr/local/etc/php/php.ini
WORKDIR /workこれをビルドすればXdebugの導入は完了です。
docker comopse up -d --buildphp.iniの編集
下記を追記。
[xdebug]
xdebug.client_host=host.docker.internal
xdebug.client_port=9003
xdebug.start_with_request=yes
xdebug.mode=debugxdebug.client_portはphpinfoの内容に合わせたほうが無難だと思います。(近いポート番号で試しましたができたりできなかったりしたので。。。)

launch.jsonの編集
下記を追記。
"configurations": [
    {
     "name": "Listen for Xdebug",
     "type": "php",
     "request": "launch",
     "port": 9003, //php.ini のxdebug.client_portに合わせる
     "pathMappings": {
     "/work": "${workspaceRoot}/backend"
    }
  },
]portはphp.ini のxdebug.client_portに合わせる。
pathMappingsはそれぞれの環境に合わせて書き換えてください。
"pathMappings": {
    "{{ 先程のDokcerfileのWORKDIR }}": "{{ laravelプロジェクトのルートパス }}"
}動作確認
先程追記したconfigurationのnameに対応する構成を選択して実行。
今回でいうと「Listen for Xdebug」
※新しく構成を追加した場合は注意!

あとはブラウザの方で何かしらの操作をして、ブレークポイントで止まることを確認できたら完了です。
補足
launch.jsonを編集したときはXdebugの再起動、
Dockerfileを編集したときはdocker compose up -d --buildを忘れずに。