HOWTO · PHP
PHP-FPM 및 Nginx Docker 컨테이너 설정
이 튜토리얼에서는 Docker에서 로컬로 개발할 때 PHP, PHP-FPM 및 NGINX 컨테이너를 설정하는 방법에 대해 설명합니다.
이 페이지의 내용
이 튜토리얼에서는 Docker에서 로컬로 개발할 때 PHP, PHP-FPM 및 NGINX 컨테이너를 설정하는 방법에 대해 설명합니다.
테이크아웃:
- 명령줄에서 컨테이너를 구성하고 실행합니다.
- Docker 파일 및 용도.
- 컨테이너가 상호 작용하는 방식.
장치에 Docker 프로그램과 Git Bash가 설치되어 있는지 확인하십시오.
PHP CLI 컨테이너 설정
소스 코드를 저장하는 C:/delft/docker-php/app 디렉토리를 생성합니다.
mkdir -p "C:/delft/docker-php/app"
튜토리얼에서는 공식 PHP 이미지를 사용합니다. 아래 코드를 실행합니다.
docker run -d --name docker-php -v "C:/delft/docker-php/app":/var/www php:7.0-cli
즉,
docker run- 컨테이너를 실행합니다.-d- 백그라운드에서 실행됩니다(분리됨).--name docker-php-docker-php를 지정합니다.-v "C:/delft/docker-php/app":/var/www- Windows 호스트의C:/delft/docker-php/app디렉토리를/var/와 동기화합니다. www컨테이너에서.php:7.0-cli- 이 이미지를 사용하여 컨테이너를 빌드합니다.
출력:
$ docker run -d --name docker-php -v "C:/delft/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
머신에 이미지가 없기 때문에 Docker는 공식 레지스트리에서 이미지를 가져오려고 시도합니다.
docker ps -a 명령을 실행하여 컨테이너가 실행 중인지 확인합니다.
컨테이너는 초기화 직후 실행을 중지합니다. docker run 명령에 -i 인수를 추가해야 합니다.
docker run 명령을 다시 실행하기 전에 아래 명령을 실행하십시오.
docker rm docker-php
위의 명령은 다시 사용할 수 없기 때문에 첫 번째 docker-php를 제거합니다. 이제 -i 플래그와 함께 docker run 명령을 실행할 수 있습니다.
docker run -di --name docker-php -v "C:/delft/docker-php/app":/var/www php:7.0-cli
7b3024a542a2d25fd36cef96f4ea689ec7ebb758818758300097a7be3ad2c2f6
docker ps -a 명령을 실행하여 컨테이너가 실행 중인지 확인합니다.
로그인하려면 아래 명령을 실행하십시오.
winpty docker exec -it docker-php bash
PHP-FPM 및 NGINX로 웹 스택 설정
이제 PHP-FPM 및 Nginx 컨테이너를 설정하는 방법에 대해 논의하겠습니다.
NGINX 설정
우리는 공식 Nginx 이미지를 실행하기 위한 컨테이너 역할을 할 서버를 확보하는 것으로 시작합니다. 최신 Nginx 이미지를 실행하기 위해 docker-compose.yml을 생성합니다. 포트 80 및 8080을 활용합니다.
web:
image: nginx:latest
ports:
- "8080:80"
그런 다음 docker-compose up 명령을 실행합니다.
출력:
docker-compose.yml 파일을 로컬 저장소에 마운트해 보겠습니다. docker-compose.yml 파일이 있는 delft 폴더를 사용합니다.
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./delft:/delft
이 시점에서 Nginx는 폴더가 존재하는지 모릅니다. 이를 해결하기 위해 다음 site.conf 파일을 사용합니다.
server {
index index.html;
server_name php-docker.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /delft;
}
설정을 활성화해야 합니다. docker-compose.yml 파일을 좀 더 수정해 보겠습니다.
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./delft:/delft
- ./site.conf:/etc/nginx/conf.d/site.conf
이제 deft 폴더에 index.html 을 추가하고 아래 코드를 실행할 수 있습니다.
docker-compose up
Nginx가 실행 중이어야 합니다.
PHP-FPM 추가
다음 단계는 Nginx 컨테이너에 연결될 공식 PHP7-FPM을 가져오는 것입니다. 업데이트된 docker-compose.yml 파일은 다음과 같아야 합니다.
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./delft:/delft
- ./site.conf:/etc/nginx/conf.d/site.conf
links:
- php
php:
image: php:7-fpm
이제 PHP-FPM 컨테이너를 사용하여 PHP 파일을 해석하도록 Nginx 컨테이너를 구성합니다. 업데이트된 site.conf 파일은 다음과 같습니다.
server {
index index.php index.html;
server_name php-docker.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /delft;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
프로그램을 테스트해 봅시다. 먼저 index.html 파일의 이름을 index.php로 변경하고 내용을 다음과 같이 변경합니다.
<?php
echo phpinfo();
docker-compose up 명령을 실행하기 전에 delft 폴더를 PHP 컨테이너에 마운트해야 합니다. docker-compose.yml 파일의 최종 반복은 다음과 같습니다.
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./delft:/delft
- ./site.conf:/etc/nginx/conf.d/site.conf
links:
- php
php:
image: php:7-fpm
volumes:
- ./delft:/delft
docker-compose up 명령을 실행하면 아래 이미지가 생성됩니다.
그것은 우리의 튜토리얼을 요약합니다.