PHP 애플리케이션 도커화

애플리케이션을 도커화하면 많은 이점이 있습니다. 최신 마이크로 서비스 아키텍처에는 애플리케이션을 컨테이너화해야 합니다. 또한 프로덕션 환경과 개발 환경 간의 격차를 최소화합니다. 개발자는 단일 명령으로 모든 종속성과 함께 가동 및 실행할 수 있습니다.



도커화하는 동안 컴파일된 언어의 개발은 다양한 문제에 시달릴 수 있습니다. 주요 병목 현상 중 하나는 사소한 변경 후 변경 세트를 검사하는 것입니다. 다양한 스택에 사용할 수 있는 핫 리로드 옵션이 많이 있지만 대부분 매우 느리고 버그가 많습니다. 때때로 변경 세트가 적절하게 전파되지 않아 불필요한 번거로움이 발생합니다.



게다가 PHP와 같은 스크립팅 언어는 이러한 문제를 겪지 않습니다. 파일이 apache 의 제공 디렉토리 내에 있는 한 모든 변경 사항은 Apache 서버에서 볼 수 있습니다. 간단히 말해apache 요청 경로에 지정된 특정php 파일에 대한.php 프로세스를 생성합니다.



그렇다면 도커 컨테이너를 사용하여 개발하는 동안 어떻게 이점을 얻을 수 있습니까?

PHP 애플리케이션용 도커를 사용하여 컨테이너화의 힘을 어떻게 활용할 수 있는지 시작하겠습니다.

확인this repository하거나 처음부터 시작할 수 있습니다. 디렉토리 구조는 다음과 같습니다.

.
├── src
│   └── index.php
├── Dockerfile
└── docker-compose.yml

index.php 내부에는 다음과 같은 멋진 스크립트가 작성됩니다.

<?php echo "Hello world\n"; ?>




이제 애플리케이션을 도커화하려면 aDockerfile가 필요합니다. phpapache 사전 설치된 도커 이미지가 필요합니다. php:apache-buster 이미지 우리가 찾고 있는 그런 이미지입니다.

해당 이미지를 기본 이미지로 사용하면 Dockerfile는 다음과 같이 표시됩니다.

FROM php:apache-buster

COPY ./src/* /var/www/html

CMD ["apache2-foreground"]


기본 이미지FROM 명령 직후에 아파치가 요청하는 동안 파일을 제공하는 src 내부의 /var/www/html 폴더 내용을 복사했습니다.

실제로 전경에서 아파치를 실행하는 마지막 줄. 사실 기본 이미지php:apache-buster에서 복사했습니다 😉.

이제 이미지에 대한 정의가 준비되었습니다.



이제 로컬 오케스트레이션 파일을 사용할 시간입니다docker-compose.yml. 이 파일은 이미지를 실행하기 위한 구성을 지정합니다.

version: '3.2'
services:
  awesome-app:
    build:
      context: .
      dockerfile: Dockerfile
    image: awesome-app:latest
    ports:
    - 80:80
    volumes:
    - type: bind
      source: ./src
      target: /var/www/html


여기에서는 awesome-app라는 이름의 서비스가 선언됩니다. 이 서비스는 방금 작성한 Dockerfile를 사용하여 이미지를 빌드합니다. 이미지 이름을 awesome-app로 지정하고 latest로 태그를 지정했습니다. 호스트에서 Apache에 액세스할 수 있도록 포트80를 호스트에 노출했습니다.

마지막 부분은 가장 까다로운 부분으로 호스트./src(소스 디렉토리)를 컨테이너/var/www/html(Apache가 제공되는 디렉토리)에 연결하는 볼륨을 마운트합니다. 이 볼륨 마운팅은 ./src 내부에서 수행된 모든 변경 사항이 apache에 표시되도록 합니다.



이제 테스트할 시간입니다. 모든 것이 예상대로 작동하는지 테스트하기 위해 다음을 수행합니다.
  • 시작 awesome-app .
  • 기존 출력을 확인하십시오.
  • 코드를 변경합니다.
  • 변경된 출력을 검사합니다.

  • 1. 스타팅awesome-app
    awesome-app를 시작하려면 docker-compose를 사용합니다.

    docker-compose up -d
    


    그러면 백그라운드에 awesome-app 컨테이너가 생성됩니다.

    2. 기존 출력 확인

    기존 코드베이스의 출력을 검사하기 위해 사용합니다curl.

    curl -i http://localhost
    



    HTTP/1.1 200 OK
    Date: Thu, 25 Aug 2022 19:27:35 GMT
    Server: Apache/2.4.38 (Debian)
    X-Powered-By: PHP/8.1.9
    Content-Length: 12
    Content-Type: text/html; charset=UTF-8
    
    Hello world
    


    3. 변경 코드:

    이제 내부 코드를 수정하겠습니다index.php.

    <?php echo "My Awesome app says hello world\n"; ?>
    


    4. 변경된 출력을 검사합니다.

    curl -i http://localhost
    



    HTTP/1.1 200 OK
    Date: Thu, 25 Aug 2022 19:37:24 GMT
    Server: Apache/2.4.38 (Debian)
    X-Powered-By: PHP/8.1.9
    Content-Length: 32
    Content-Type: text/html; charset=UTF-8
    
    My Awesome app says hello world
    




    도커의 모든 이점을 활용하여 로컬에서 PHP 애플리케이션을 개발하는 것과 같습니다.

    위의 모든 코드는 my github repository에서 사용할 수 있습니다.

    좋은 웹페이지 즐겨찾기