분류 php

PHP 스크립트 용 Docker 컨테이너 생성

컨텐츠 정보

  • 조회 124 (작성일 )

본문

PHP 스크립트는 환경 의존성에 대해 나쁜 평판을 얻고 있습니다. 대부분의 개발자와 달리 저는 항상 Docker 컨테이너에서 모든 백엔드 애플리케이션을 사용하는 것을 선호합니다. PHP 스크립트를 배포하는 동안 컨테이너화를 사용하는 데는 몇 가지 이유가 있습니다.


  • 플랫폼에 구애 받지 않는 접근 방식
  • 환경 쓰레기 제거
  • 오류 방지 서버
  • 확장성

이미 안정적이고 기본적으로 구성되어 있기 때문에 공식 PHP 컨테이너를 사용하고 싶습니다. 나는 또한 아파치로 선택할 것입니다. 나는 일반적으로 PHP 스크립트에서 매우 일반적인 htaccess 파일을 사용할 수 있도록 apache와 함께 php를 사용하는 것을 선호합니다. nginx 또는 traefik을 사용하여 역방향 프록시를 넣고 공용 네트워크에 노출합니다.

7.4는 커뮤니티와 안정적인 버전에서 널리 사용되기 때문에 php : 7.4-apache를 선택했습니다. 또한 많은 PHP 스크립트에서 지원됩니다. 먼저 컨테이너에 많은 것이 없기 때문에 기본 PHP 컨테이너를 구성 할 수 있도록 Dockerfile을 만들어야 합니다.


먼저 다음 줄로 Dockerfile을 시작합니다.


FROM php:7.4-apache 


나는 일반적으로 /app 디렉토리를 사용하여 내 코드를 내 PHP 컨테이너에 배치하는 것을 선호하지만 아파치 서버의 기본값인 /var /www /html을 사용하는 것이 더 일반적인 목적이라고 생각합니다. 아래 명령을 사용합니다.


WORKDIR /var/www/html 


이 컨테이너를 개발하는 동안 로케일과 관련된 일부 PHP 스크립트에서 오류가 발생하여 수정 사항을 찾았습니다. 이러한 문제가 있는 일부 데비안 버전을 사용하기 때문에 공식 PHP 컨테이너와 관련이 있습니다. 다음 줄을 사용하여 로케일 문제를 해결해 보겠습니다.



.htaccess 파일에서 일반적으로 사용되는 몇 가지 필수 구성을 활성화합니다.



프로덕션 모드에서 PHP가 작동하도록 만드십시오. 그렇지 않으면 디버그 모드에서 애플리케이션을 배포하는 것이 매우 위험 할 것입니다.


내 PHP 스크립트에서 이러한 확장은 일반적으로 사용되므로 포함하고 싶었습니다. 필요한 것을 추가하거나 원하는 경우 사용하지 않는 것을 제거해야 합니다. 공식 PHP 컨테이너에는 PHP 확장을 훨씬 쉽게 설치할 수 있는 몇 가지 실행 파일이 있습니다. docker-php-ext-configure, docker-php-ext-install, docker-php-ext-enable



이제 파일을 /var/www/html 폴더에 복사해야 합니다. 다음 명령을 사용하십시오.



Php 아파치 컨테이너에는 이미 80 개의 포트가 노출되어 있으며 완벽하게 작동합니다. 80 포트를 8080 또는 80과 같은 포트에 매핑 할 수 있습니다.


docker run -p 80:80 ....... 


또한 수정되지 않는 한 기본 PHP 컨테이너에 일부 아파치 취약점이 있을 수 있음을 배웠습니다. 내 아파치 서버를 공용 네트워크에 노출하는 것보다 nginx 서버를 역방향 프록시로 사용하는 것을 선호합니다. 곧 그 방법에 대한 기사를 게시 할 수 있기를 바랍니다.


시작 키트에 대한 내 Github 저장소를 확인하세요. https://github.com/h4kbas/docker-php-apache


https://hakbas.medium.com/creating-docker-container-for-php-scripts-9481d6b1b829