>  기사  >  백엔드 개발  >  PHP 개발에서 환경 관리를 위해 컨테이너 기술을 사용하는 방법

PHP 개발에서 환경 관리를 위해 컨테이너 기술을 사용하는 방법

WBOY
WBOY원래의
2023-06-25 10:53:331425검색

현대 PHP 개발에서는 환경 관리를 위해 컨테이너 기술을 사용하는 것이 점점 더 보편화되었습니다. 이 기사에서는 Docker 컨테이너 기술을 사용하여 PHP 프로젝트의 개발 환경을 생성, 구성 및 관리하는 방법을 소개합니다.

1. 환경 관리를 위해 컨테이너 기술을 사용하는 이유

기존 PHP 개발에서는 현재 프로젝트에 적합한 환경을 구축하기 위해서는 많은 구성과 설치가 필요합니다. 이러한 구성을 획일적으로 패키징하면 개발 시 이식성, 일관성, 안정성이 향상될 수 있습니다. 이 경우 컨테이너 기술을 활용하는 것은 불가피한 선택이 된다.

구체적으로 컨테이너 기술을 사용하면 다음과 같은 이점이 있습니다.

  1. 환경 일관성: 컨테이너를 사용하면 서로 다른 머신에서, 그리고 서로 다른 개발자 간에 환경이 일관되게 유지되도록 할 수 있습니다.
  2. 뛰어난 이식성: 컨테이너는 환경을 재구성하지 않고도 컨테이너 기술을 지원하는 모든 환경에서 실행될 수 있습니다.
  3. 더 나은 격리: 컨테이너는 가상화와 유사한 격리를 제공하여 프로젝트의 여러 부분 간의 상호 작용을 최소화할 수 있습니다.

2. Docker를 사용하여 PHP 개발 환경 만들기

Docker는 현재 가장 널리 사용되는 컨테이너 기술 중 하나이므로 이 기사에서는 Docker를 사용하여 PHP 개발 환경을 만듭니다.

  1. Docker 설치

먼저 로컬 환경에 Docker를 설치해야 합니다. 공식 웹사이트에서 귀하의 머신에 적합한 Docker 버전을 다운로드하여 설치할 수 있습니다.

  1. Create Dockerfile

프로젝트의 루트 디렉터리에 Dockerfile이라는 파일을 생성하고 파일 내용을 작성합니다. Dockerfile은 Docker가 이미지를 생성하는 데 사용하는 스크립트 파일입니다. Dockerfile의 구체적인 내용은 다음과 같습니다.

FROM php:7.4-fpm

# Install dependencies
RUN apt-get update && apt-get install -y 
    git 
    libzip-dev 
    unzip

# Install PHP extensions
RUN docker-php-ext-install zip pdo_mysql

# Install Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Set working directory
WORKDIR /app

이 Dockerfile의 의미는 기존 PHP 기본 이미지에서 새 이미지를 빌드하는 것입니다. 그런 다음 git, libzip 및 unzip과 같은 필수 종속성을 설치하고 PHP 확장 zip 및 pdo_mysql을 설치하십시오.

COPY 명령은 Composer 이미지의 파일을 새 이미지로 복사하는 데 사용되므로 Composer 도구를 새 이미지에서 정상적으로 사용할 수 있습니다.

  1. Build Docker Image

다음으로 Dockerfile을 사용하여 Docker 이미지를 빌드해야 합니다. 터미널에 프로젝트 루트 디렉터리를 입력한 후 다음 명령을 실행합니다.

docker build -t project-name .

여기서 project-name은 생성할 Docker 이미지의 이름이고 마지막 "."은 Dockerfile 파일이 있는 디렉터리를 나타냅니다. 이 명령은 프로젝트에 대한 새 Docker 이미지를 생성합니다.

  1. 컨테이너 실행

다음 명령을 사용하여 새 이미지의 컨테이너를 시작합니다.

docker run -p 8000:8000 -v "$(pwd)":/app -it project-name

여기서 "8000"은 컨테이너에서 노출할 포트 번호입니다. 이 예에서는 컨테이너의 8000 포트를 다음과 같이 매핑합니다. 호스트의 8000 포트. 또한 -v 매개변수는 PHP 코드가 컨테이너 내에서 실행될 수 있도록 현재 디렉터리를 컨테이너 내의 /app 디렉터리에 매핑합니다. 마지막으로 "project-name"은 사용할 Docker 이미지의 이름을 나타냅니다.

3. Docker Compose를 사용하여 복잡한 PHP 프로젝트 관리

복잡한 PHP 프로젝트의 경우 여러 서비스(예: 데이터 저장소, 캐시, 웹 서버 등)를 사용해야 할 수 있습니다. 현재 Docker Compose를 사용하여 이러한 서비스를 관리할 수 있습니다.

Docker Compose는 여러 Docker 컨테이너를 관리하는 데 사용할 수 있는 Docker용 도구입니다. Docker Compose를 사용하면 여러 컨테이너를 생성 및 구성하고, 서로 연결하고, 몇 가지 일반적인 배포 작업(예: 데이터 볼륨 및 포트 매핑 등)을 처리할 수 있습니다.

  1. docker-compose.yml 파일 준비

Docker Compose는 docker-compose.yml이라는 구성 파일을 사용합니다. PHP 프로젝트의 루트 디렉터리에 이 파일을 만들고 그 안에 생성할 컨테이너를 정의합니다. 예는 다음과 같습니다.

version: '3.4'

services:
  php:
    build: .
    ports:
      - "8000:8000"
    volumes:
      - .:/app
    depends_on:
      - db

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: app
      MYSQL_USER: app
      MYSQL_PASSWORD: secret
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

이 파일은 php와 db라는 두 가지 서비스를 정의합니다.

php 서비스는 이전에 생성된 Dockerfile을 사용하여 새 이미지를 빌드한 다음 컨테이너의 8000 포트를 호스트의 8000 포트에 매핑하고 현재 디렉터리를 컨테이너 내의 /app 디렉터리에 매핑합니다. 서비스는 db 서비스에 따라 다릅니다.

db 서비스는 MySQL 5.7의 공식 이미지를 사용하고 MySQL의 루트 비밀번호, 데이터베이스 이름, 사용자 및 기타 정보를 설정하기 위한 일부 환경 변수를 정의합니다. MySQL 컨테이너 내에 영구 스토리지로 데이터 볼륨도 생성됩니다.

이 파일은 db_data라는 볼륨도 정의합니다. 볼륨은 여러 컨테이너 간에 데이터를 공유할 수 있도록 컨테이너 내에 데이터를 저장하는 데 사용됩니다. 볼륨은 일부 영구 스토리지 솔루션도 제공합니다.

  1. 여러 컨테이너 실행

docker-compose.yml 파일을 작성한 후 다음 명령을 사용하여 PHP 프로젝트에 정의된 모든 컨테이너를 만들고 시작할 수 있습니다.

docker-compose up -d

이 명령은 정의된 모든 서비스를 백그라운드에서 실행합니다. .

다음 명령을 실행하면 실행된 모든 컨테이너를 확인할 수 있습니다.

docker ps
  1. 컨테이너 중지 및 삭제

모든 서비스와 컨테이너를 중지해야 하는 경우 다음 명령을 실행할 수 있습니다.

docker-compose down

이 명령은 중지됩니다. 실행 중인 모든 컨테이너를 삭제하고 모든 서비스를 제거합니다. 특정 서비스를 중지하고 삭제해야 하는 경우 다음 명령을 실행할 수 있습니다.

docker-compose stop service-name
docker-compose rm service-name

여기서 service-name은 중지하고 삭제할 서비스의 이름입니다.

이 문서에서는 Docker를 사용하여 PHP 개발 환경을 만들고 관리하는 기본 개념과 단계를 소개합니다. 컨테이너 기술을 사용하면 개발 프로세스의 일관성, 이식성 및 신뢰성을 향상시킬 수 있으며 PHP 프로젝트 개발에 중요한 역할을 할 수 있습니다.

위 내용은 PHP 개발에서 환경 관리를 위해 컨테이너 기술을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.