PHP 애플리케이션 도커화
도커화하는 동안 컴파일된 언어의 개발은 다양한 문제에 시달릴 수 있습니다. 주요 병목 현상 중 하나는 사소한 변경 후 변경 세트를 검사하는 것입니다. 다양한 스택에 사용할 수 있는 핫 리로드 옵션이 많이 있지만 대부분 매우 느리고 버그가 많습니다. 때때로 변경 세트가 적절하게 전파되지 않아 불필요한 번거로움이 발생합니다.
게다가 PHP와 같은 스크립팅 언어는 이러한 문제를 겪지 않습니다. 파일이
apache
의 제공 디렉토리 내에 있는 한 모든 변경 사항은 Apache 서버에서 볼 수 있습니다. 간단히 말해apache
요청 경로에 지정된 특정php
파일에 대한.php
프로세스를 생성합니다.그렇다면 도커 컨테이너를 사용하여 개발하는 동안 어떻게 이점을 얻을 수 있습니까?
PHP 애플리케이션용 도커를 사용하여 컨테이너화의 힘을 어떻게 활용할 수 있는지 시작하겠습니다.
확인this repository하거나 처음부터 시작할 수 있습니다. 디렉토리 구조는 다음과 같습니다.
.
├── src
│ └── index.php
├── Dockerfile
└── docker-compose.yml
index.php
내부에는 다음과 같은 멋진 스크립트가 작성됩니다.<?php echo "Hello world\n"; ?>
이제 애플리케이션을 도커화하려면 a
Dockerfile
가 필요합니다. php
및 apache
사전 설치된 도커 이미지가 필요합니다. 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에서 사용할 수 있습니다.
Reference
이 문제에 관하여(PHP 애플리케이션 도커화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ratulsharker/dockerize-php-application-1ldj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)