Docker, PHPStorm, Xdebug, 권위 있는 가이드

Docker는 우리가 응용 프로그램을 개발하는 방식을 크게 바꾸었다.덕분에 모든 사람들이 하나의 명령으로 복잡한 프로그램을 쉽게 실행할 수 있고 의존성 등 내부 세부 사항을 걱정할 필요가 없다.팀이나 기업 환경에서 일할 때 이런 장점이 더욱 크다.나는 내가 현재 회사에 가입하기 3일 전, 프로젝트 설정과 모든 관련 라이브러리와 도구를 기억하고 있다.Docker는 그것을 더욱 간단하고 빠르며 일치하게 합니다.
하지만 모든 것은 대가가 있다.모든 Docker를 유지하는 데는 별도의 복잡성이 있습니다.로컬에서 실행되는 일반적인 개발 환경에서 매우 간단한 일들도 있다. 예를 들어 IDE에서 프로그램을 디버깅하려면 현재 추가 설정이 필요하다.Xdebug가 작동하도록 하려면 쉽지 않은 작업입니다.나는 처음부터 끝까지 모든 절차가 있는 안내서를 찾을 수 없다.이것이 바로 내가 이 글을 쓰기로 결정한 이유다.Xdebug 및 PHPStorm을 한 걸음 한 걸음 설치하고 구성하며 정지된 Symfony 4 애플리케이션을 사용하도록 안내합니다.

예비 지식

  • 이것은 PHPStorm 2018.1.4와DockerDocker Compose의 최신 버전이 있는 Ubuntu 18.04 기기에서 테스트한 것이다.어떤 것들은 다른 운영체제에서는 약간 다를 수 있다.
  • 저는 당신이 Docker, PHP, XDebug에 대해 기본적으로 알고 있다고 가정합니다.
  • 이 gude를 기반으로 복제this 저장소를 복제할 수 있습니다. 이 gude는 본고에서 소개한 모든 Docker 내용을 포함하는 기본적인 Symfony Flex 프로그램을 포함하고 있기 때문입니다.
  • 1단계 - 응용 프로그램을 Dockerize


    물론 Xdebug를 사용할 수 있도록 Docker 컨테이너에 설치해야 합니다.
    이를 어떻게 하는지는 당신의 기본적인 이미지에 달려 있다.나는 항상 알프스 산을 기반으로 한 그림을 사용한다.Symfony 애플리케이션을 아카이빙하는 방법에 대해서는 자세히 설명하지 않겠습니다.프레젠테이션 저장소에 포함된 Dockerfile를 사용할 수 있습니다.
    Xdebug가 설치된 Dockerfile에 대한 발췌문은 다음과 같습니다.
    ARG WITH_XDEBUG=false
    
    RUN if [ $WITH_XDEBUG = "true" ] ; then \
            pecl install xdebug; \
            docker-php-ext-enable xdebug; \
            echo "error_reporting = E_ALL" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
            echo "display_startup_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
            echo "display_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
            echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
        fi ;
    
    별도의 Dockerfile을 개발 및 생산에 사용하고 싶지 않으므로 Xdebug를 설치할지 여부를 알려주는 구축 매개 변수를 정의했습니다.
    그런 다음 Docker compose 파일에서 내 응용 프로그램은 다음과 같이 정의됩니다.
    version: "3"
    
    services:
    
      php:
        build:
          context: .
          args:
            - WITH_XDEBUG=true
        env_file: .env
        volumes:
          - .:/var/www/app:rw
    
    See 완전한 docker compose 파일에 사용됩니다.
    별거 아니야.중요한 점은 "env file"명령입니다. 이것은 Compose가 ".env"파일에서 환경 변수를 불러오는 것을 알려 줍니다. 이것은 Symfony 4 프로그램의 표준 방식입니다.
    이 파일을 사용하여 Xdebug에 필요한 환경 변수를 추가합니다.원한다면 '환경' 부분을 docker compose 파일에 직접 추가할 수도 있습니다.

    환경 변수


    다음과 같은 환경 변수를 정의합니다.
  • PHP IDE CONFIG - 이 변수는 응용 프로그램과 연관된 서버 구성을 정의합니다.나중에 자세히 설명할게요.
  • XDEBUG CONFIG - 이 변수를 사용하여 일부 XDEBUG 구성을 정의할 수 있습니다.원격 호스트는 호스트(PHPStorm에서 실행 중인 호스트)의 전용 IP입니다.'원격 포트'는 PHPStorm이 Xdebug 연결에 수신되는 포트입니다.이 두 설정은 PHPStorm과 Xdebug 간 통신을 허용합니다.이거 없으면 안돼.
  • 다음과 같이.env 파일에 추가합니다.
    PHP_IDE_CONFIG=serverName=symfony-demo
    XDEBUG_CONFIG=remote_host=192.168.1.102 remote_port=9001
    
    이게 코드야.
    이제 PHPStorm 구성에 대해 자세히 살펴보겠습니다.

    PHPStorm 구성


    네가 해야 할 첫 번째 일은 디버깅 설정을 검사하는 것이다.PHPStorm에서 파일-> 설정-> 언어 및 프레임-> PHP> 디버깅으로 이동합니다.
    XDEBUG CONFIG 환경 변수에서 이전에 구성한 포트가 있는지 확인합니다.

    다음에 우리는 서버를 설정해야 한다.이것이 바로 PHPStorm이 로컬 시스템의 파일 경로를 컨테이너의 경로에 매핑하는 방법입니다.
    파일 시작 -> 설정 -> 언어 및 프레임워크 -> PHP-> 서버

    당신의 서버에 이름을 지어 주세요.PHP IDE CONFIG 환경 변수에 정의된 값과 일치해야 합니다.우리는'symfony demo'라고 부른다.
    호스트 및 포트 는 애플리케이션에 액세스하는 방법입니다.나의 예는localhost:8888이다.
    그 다음은 경로 매핑입니다.
    '프로젝트 파일' 부분에서 프로그램의 루트 경로를 용기 내의 경로에 비추어야 합니다.나의 예는 "/var/www/app"이다.
    적용을 클릭하여 구성을 저장합니다.
    마지막 부분은 프로젝트를 설정하는 원격 디버거입니다.
    오른쪽 위 모서리에서 구성 편집을 클릭합니다.

    왼쪽 상단의 녹색 "더하기"를 누르고 목록에서 "PHP 원격 디버깅"을 선택하십시오.
    이제 다음과 같이 구성됩니다.

    이전에 생성한 서버 정의와 연관되어 있는지 확인합니다."PHPSTORM"을 idekey로 사용합니다.
    이제 IDE가 올바르게 구성되었습니다.테스트해 봅시다.

    테스트

  • 'src/Controllers/HelloController.php'를 열고'hello'방법에 단점을 설치합니다.
  • docker-compose up
  • 그리고 PHPStorm 오른쪽 상단에 있는 "PHP 디버깅 연결 감청 시작"아이콘을 클릭합니다.
  • 열기http://localhost:8888?XDEBUG_SESSION_START=PHPSTORM
  • 만일 모든 것이 순조롭다면, 당신은 실행이 중단된 곳에서 멈추는 것을 보게 될 것입니다.

    이렇게현재, Docker와 Xdebug가 PHPStorm IDE와 통합된 완전히 구성된 개발 환경이 있어야 합니다.
    질문이 있으면 언제든지 아래 또는 GitHub 저장소에 의견을 달아 주십시오.
    감사합니다.

    좋은 웹페이지 즐겨찾기