M1 Macbook Pro에서 Docker의 Xdebug가 작동하지 않음

환경



Docker Desktop (Preview): 0.0.0(1)
OS: macOS Big Sur 11.1
IDE: PHPStorm

PHP: 7.2
Xdebug: 2.9.8

전제



통상의 Xdebug 설정등은 할애.
기존(Intel Macbook)에서 움직이고 있는 환경이 움직이지 않는다는 상태.

현상


php.ini 에서 설정한 xdebug.log 에 다음과 같은 오류가 있습니다.
[71] Log opened at 2020-12-29 07:57:31
[71] I: Connecting to configured address/port: host.docker.internal:9005.
[71] W: Creating socket for 'host.docker.internal:9000', getaddrinfo: Invalid argument.
[71] E: Could not connect to client. :-(
[71] Log closed at 2020-12-29 07:57:36

원인과 해결



Docker 공식 문서既知の問題 로 올랐다

The DNS name host.docker.internal only works if you add --add-host=host.docker.internal:host-gateway to the docker run command

DNS 이름의 host.docker.internal 은 docker run--add-host=host.docker.internal:host-gateway 를 추가하지 않으면 사용할 수 없다는 것.

이것을 docker-compose로하면,
    extra_hosts:
      - "host.docker.internal:host-gateway"

를 써줄 필요가 있다.

그러면, 컨테이너내의 /etc/hosts 로 이하의 기술을 발견.
192.168.65.1    host.docker.internal

이것으로 움직인다. . . 는 안 된다.
E: Time-out connecting to client (Waited: 200 ms). :-(

접속이 타임 아웃 해 버리는 모양. . .

분명히 컨테이너 -> 호스트 (Mac) 통신이 도착하지 않은 느낌.

여러가지 시도한 결과, host-gateway를 자신의 IP로 하면 움직였다!
    extra_hosts:
      - "host.docker.internal:192.168.xxx.xxx"

자신의 IP는 터미널 상에서 아래에서 취할 수 있습니다.
ipconfig getifaddr en0

미래의 도전



이것으로 일단 해결. . . 그렇지만, 보통은 DHCP로 IP라든지 자동 설정되어 IP를 동적으로 바꾸도록 하고 싶다. . .

IP를 환경 변수에 넣고 빌드할 때 읽을 수 있도록 하거나 컨테이너 내의 호스트를 다시 쓰는 스크립트를 작성할 것인가? . .

좋은 웹페이지 즐겨찾기