HOWTO · PHP

PHP-FPM 및 Nginx Docker 컨테이너 설정

이 튜토리얼에서는 Docker에서 로컬로 개발할 때 PHP, PHP-FPM 및 NGINX 컨테이너를 설정하는 방법에 대해 설명합니다.

이 페이지의 내용

이 튜토리얼에서는 Docker에서 로컬로 개발할 때 PHP, PHP-FPM 및 NGINX 컨테이너를 설정하는 방법에 대해 설명합니다.

테이크아웃:

  1. 명령줄에서 컨테이너를 구성하고 실행합니다.
  2. Docker 파일 및 용도.
  3. 컨테이너가 상호 작용하는 방식.

장치에 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

즉,

  1. docker run - 컨테이너를 실행합니다.
  2. -d - 백그라운드에서 실행됩니다(분리됨).
  3. --name docker-php - docker-php를 지정합니다.
  4. -v "C:/delft/docker-php/app":/var/www - Windows 호스트의 C:/delft/docker-php/app 디렉토리를 /var/와 동기화합니다. www 컨테이너에서.
  5. 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 명령을 실행합니다.

출력:

nginx

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 명령을 실행하면 아래 이미지가 생성됩니다.

phpinfo

그것은 우리의 튜토리얼을 요약합니다.