PHP-FPM 및 Nginx Docker 컨테이너 설정
이 튜토리얼에서는 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
명령을 실행하면 아래 이미지가 생성됩니다.
그것은 우리의 튜토리얼을 요약합니다.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn