티스토리 뷰
macOS 운영체제 기반 PHP 개발 환경에서
homestead 대신 docker 를 서버로 사용하려
laradock 설치 및 셋팅을 하던 중
xdebug 연동시 remote_host 주소 셋팅 단계가 되었는데
기존 macOS 용 docker 는 hypervisor 인 VirtualBox 기반이어서
호스트 IP 주소를 VirtualBox 의 네트워크 설정을 열어보면 쉽게 알 수 있었는데
현재 macOS 용 docker 는 linux 와 같이 hypervisor 가 필요 없게되어 자원낭비도 줄일 수 있는 등 여러모로 좋으나,
xdebug 연동하려다보니 remote_host 주소를 어디서 조회해봐야 하는지 오리무중이라 구글링!
docker 컨테이너에서 호스트 ip 접근 방법 #1 (택1)
https://docs.docker.com/docker-for-mac/networking/#i-cannot-ping-my-containers
I WANT TO CONNECT FROM A CONTAINER TO A SERVICE ON THE HOST
컨테이너에서 호스트의 서비스에 연결하고 싶다면The Mac has a changing IP address (or none if you have no network access).
현재 추천하는 방법은 맥의 lo0 루프백 네트워크 인터페이스에 사용하지 않는 IP를 붙이는것;
sudo ifconfig lo0 alias 10.200.10.1/24
명령을 수행한 후 이 주소나 0.0.0.0 (127.0.0.1 말고) 에서 서비스를 수신하도록 만들기.
그러면 컨테이너는 이 주소에 접속 가능.
macOS 에서 시스템 시작시 루프백 네트워크 인터페이스 별칭 설정
[참고] http://kiennt.com/blog/2012/06/27/add-new-startup-items-on-mac-osx.html
$ sudo mkdir -p /System/Library/StartupItems/DockerHelper
$ sudo touch /System/Library/StartupItems/DockerHelper/DockerHelper
$ sudo chmod +x /System/Library/StartupItems/DockerHelper/DockerHelper
$ sudo touch /System/Library/StartupItems/DockerHelper/StartupParameters.plist
# modify contents of StartuParameters.plist
$ sudo vim /System/Library/StartupItems/DockerHelper/StartupParameters.plist
{
Description = "Support Local Docker";
Provides = ("DockerHelper");
OrderPreference = "None";
}
# modify contents of DockerHelper
$ sudo vim /System/Library/StartupItems/DockerHelper/DockerHelper
#!/usr/bin/env sh
. /etc/rc.common
StartService()
{
ifconfig lo0 alias 10.200.10.1/24
}
StopService()
{
ifconfig lo0 -alias 10.200.10.1/24
}
RestartService()
{
ifconfig lo0 alias 10.200.10.1/24
}
RunService "$1"
호스트 파일 수정
# sudo vi /etc/hosts
10.200.10.1 laravel
(호스트에서 컨테이너 웹서비스에 http://laravel 과 같이 접근 가능)
hosts 파일 저장 후
10.200.10.1 을 클립보드에 복사
docker 컨테이너에서 호스트 ip 접근 방법 #2 (택1)
https://medium.com/@pablofmorales/xdebug-with-docker-and-phpstorm-786da0d0fad2
의 글을 참고로 하여 연동에 성공함.
공식 가이드 문서는 https://github.com/LaraDock/laradock/blob/master/_guides/phpstorm.md
remote_host 주소는 터미널 창에서 아래 명령을 시행하면 클립보드에 복사됨
$ cat ~/Library/Containers/com.docker.docker/Data/database/com.docker.driver.amd64-linux/slirp/host | pbcopy
(laradock) xdebug 설정은 아래 이미지에서와 같이 하였으나
몇몇 설정은 입맛에 따라 변경 가능
laradock 의 docker-compose.yml 설정은
아래 yml 의 형광색 강조들과 같이 변경 하였으며,
중요한 부분은 extra_hosts: 하위 항목 주소값을 위 과정에서 클립보드에 복사했던 IP로 변경하는 것!
위 스샷의 xdebug.remote_host 의 주소에 매칭되는 host ip 값 설정임.
위 PHP_IDE_CONFIG=serverName=localhost 와 아래 스샷의 Name: localhost 값을 동일하게 할 것!
PHPStorm 설정은
CMD + , (쉼표) 클릭하여 환경설정 열고
환경 목록 필터를 위해 servers 타이핑 하여 목록 필터링 되면
Languages & Frameworks > PHP > Servers 찾고
아래 스샷과 같이 설정.
여기서 중요한 포인트는
경로들을 정확히 매칭시켜 주는것!
경로가 정확히 매칭되지 않은 경우
listening debugger connections 를 ON 하여 아이콘이 녹색 표시 상태에서
break 가 아예 걸리지 않거나
PHP script 맨 처음에 break 되는 상황이 발생함.
PHPStrom 에서 실행 버튼 좌측의 선택상자를 클릭 후 Edit Configurations... 클릭하고
아래 이미지와 같이 설정했음
docker-compose.yml 변경사항 적용위해 쉘 명령
// 1. 컨테이너 재생성, 가동 (복사된 설정 업데이트 반영)
$ docker-compose up -d nginx mysql
만약 위 명령으로 변경 적용이 되지 않으면 아래 터미널 명령
// 1. 기존 컨테이너 중지, 제거
// 2. php-fpm 재빌드
// 3. 컨테이너 생성, 가동
$ docker-compose down
$ docker-compose build php-fpm
$ docker-compose up -d nginx mysql
'웹프로그래밍 > PHP' 카테고리의 다른 글
Laravel 쿼리 빌더로 self join 표현법 (0) | 2017.08.08 |
---|---|
angle brackets 로 감싸진 <문장> 보존하고 html 태그 제거하고 plain text 얻기 (0) | 2016.12.21 |
PHP 에서 UTC 날짜 KST 로 변환 (0) | 2016.11.09 |
내용에 youtube embed 코드 검사 정규식 (0) | 2016.10.23 |
PHP utf-8 환경에서 euc-kr 비표준 특수문자 변환 해결 사례 (1) | 2016.03.17 |
- Total
- Today
- Yesterday
- Make Use Of
- How to geek
- 인터넷 통계정보 검색시스템
- 트위터 공유 정보모음
- 웹표준KR
- 치우의 컴맹탈출구
- Dev. Cheat Sheets
- w3schools
- Dev. 조각들
- ASP Ajax Library
- CSS Tricks
- WebResourcesDepot
- jQuery Selectors Tester
- DeveloperSnippets
- Smashing Magazine
- Nettuts+
- devListing
- 웹 리소스 사이트(한)
- Mobile tuts+
- Dream In Code
- Developer Tutorials
- CSS3 Previews
- 자북
- 안드로이드 사이드
- Code Visually
- Code School
- SQLer.com
- 무료 파워포인트 템플릿
- iconPot
- Free PowerPoint Templates
- Design Bombs
- Web Designer Wall
- 1st Webdesigner
- Vandelay Design
- 무료 벡터 이미지 사이트들
- Tripwire Magazine
- Web TrendSet
- WebMonkey
- 윤춘근 프리젠테이션 디자이너 블로그
- cz.cc 무료 DNS
- [웹하드] MediaFire
- [웹하드] DivShare
- 한컴 인터넷 오피스
- javascript
- Debug
- 안드로이드
- JQuery
- 워드프레스
- nginx
- Prototype
- API
- IE
- laravel
- iphone
- Android
- sencha touch
- classic asp
- Linux
- Chrome
- Wordpress
- JSON
- git
- CSS
- Docker
- mssql
- Mac
- nodejs
- 한글
- iis
- ASP
- IOS
- centos
- PHP
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |