>  기사  >  백엔드 개발  >  Docker Compose, Nginx 및 MariaDB의 완벽한 조합: PHP 애플리케이션 배포 모범 사례

Docker Compose, Nginx 및 MariaDB의 완벽한 조합: PHP 애플리케이션 배포 모범 사례

王林
王林원래의
2023-10-12 11:24:331394검색

Docker Compose、Nginx和MariaDB的完美组合:部署PHP应用程序的最佳实践

Docker Compose, Nginx 및 MariaDB의 완벽한 조합: PHP 애플리케이션 배포 모범 사례

소개:
현대 웹 애플리케이션 개발에서는 컨테이너화 기술의 사용이 추세가 되었습니다. 컨테이너화 기술은 애플리케이션과 해당 종속성을 단일 컨테이너로 패키징할 수 있으므로 애플리케이션은 컨테이너화 기술을 지원하는 모든 환경에서 실행될 수 있습니다. Docker는 현재 애플리케이션의 배포, 관리 및 확장을 단순화할 수 있는 가장 널리 사용되는 컨테이너화 기술입니다.

PHP로 개발된 웹 애플리케이션의 경우 Docker Compose를 사용하여 Nginx, PHP, 데이터베이스 등을 포함한 여러 컨테이너를 관리할 수 있습니다. 이 문서에서는 Docker Compose, Nginx 및 MariaDB를 사용하여 PHP 애플리케이션을 배포 및 관리하는 방법을 소개하고 특정 코드 예제를 제공합니다.

  1. Docker 및 Docker Compose 설치
    먼저 호스트 머신에 Docker 및 Docker Compose를 설치해야 합니다. Docker 공식 홈페이지(https://www.docker.com/)를 방문하여 다운로드 및 설치하실 수 있습니다. 설치가 완료되면 다음 명령을 실행하여 Docker가 올바르게 설치되었는지 확인할 수 있습니다.

    docker --version
    docker-compose --version
  2. Docker Compose 파일 생성
    프로젝트의 루트 디렉터리에 docker-compose.yml이라는 파일을 생성하여 애플리케이션 서비스 및 해당 구성. 다음은 간단한 docker-compose.yml 파일의 예입니다.

    version: '3'
    services:
      web:
     build:
       context: .
       dockerfile: Dockerfile
     ports:
       - 80:80
     volumes:
       - ./src:/var/www/html
     depends_on:
       - db
      db:
     image: mariadb
     environment:
       MYSQL_ROOT_PASSWORD: 123456
       MYSQL_DATABASE: mydb
       MYSQL_USER: user
       MYSQL_PASSWORD: password
     volumes:
       - db-data:/var/lib/mysql
    volumes:
      db-data:

    위 docker-compose.yml 파일은 두 가지 서비스를 정의합니다. 하나는 Nginx 및 PHP를 실행하기 위한 웹 서비스이고 다른 하나는 Run MariaDB를 위한 db 서비스입니다. . 웹 서비스는 포트 80을 외부 호스트에 노출하고 프로젝트 디렉터리의 src 폴더를 컨테이너의 /var/www/html 디렉터리에 매핑합니다. db 서비스는 데이터베이스 데이터의 영구 저장을 위해 MariaDB의 환경 변수와 데이터 볼륨을 설정합니다.

  3. Create Dockerfile
    웹 서비스에 필요한 커스텀 이미지를 빌드하기 위해서는 프로젝트 디렉터리에 Dockerfile이라는 파일을 생성해야 합니다. 다음은 간단한 Dockerfile의 예입니다.

    FROM php:7.4-fpm
    RUN docker-php-ext-install pdo_mysql
    WORKDIR /var/www/html

    위 Dockerfile은 공식 php:7.4-fpm 이미지를 기반으로 하고 pdo_mysql 확장이 설치되어 있으며 작업 디렉터리를 /var/www/html로 설정합니다.

  4. 컨테이너 시작
    컨테이너를 시작하려면 프로젝트의 루트 디렉터리에서 다음 명령을 실행하세요.

    docker-compose up -d

    위 명령을 실행하면 Docker는 docker-compose의 구성에 따라 웹 및 db 서비스를 시작합니다. .yml 파일입니다. -d 매개변수는 컨테이너가 백그라운드 모드에서 실행 중임을 나타냅니다.

  5. Nginx 구성
    Nginx가 웹 서비스의 PHP 애플리케이션에 요청을 올바르게 전달하려면 Nginx 구성에 다음 구성 항목을 추가해야 합니다.

    server {
     listen 80;
     server_name localhost;
     root /var/www/html;
     index index.php index.html;
    
     location / {
         try_files $uri $uri/ /index.php?$query_string;
     }
    
     location ~ .php$ {
         fastcgi_pass web:9000;
         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
         include fastcgi_params;
     }
    }

    위 구성 파일은 요청을 웹에 전달합니다. 서비스 PHP-FPM 프로세스를 실행하고 PHP 관련 환경 변수를 PHP-FPM에 전달합니다.

  6. PHP 애플리케이션 작성
    프로젝트 디렉토리 아래의 src 폴더에 PHP 애플리케이션 코드를 작성합니다. 여기서는 간단한 Hello World 프로그램을 예로 들어 보겠습니다.

    <?php
    echo "Hello World!";
  7. Access the application
    http://localhost에 액세스하면 브라우저에서 실행 중인 PHP 애플리케이션을 볼 수 있습니다.

요약:
Docker Compose, Nginx 및 MariaDB의 조합을 사용하여 PHP 애플리케이션을 쉽게 배포하고 관리할 수 있습니다. Docker Compose는 여러 컨테이너를 정의하고 실행하는 간단하고 강력한 방법을 제공하고, Nginx는 웹 서버로서 많은 수의 동시 요청을 처리할 수 있으며, MariaDB는 안정적이고 신뢰할 수 있는 데이터베이스 서비스를 제공합니다. 이 글의 소개와 예시를 통해 독자들이 이러한 기술을 더 잘 이해하고 적용하여 실제 프로젝트에서 활용할 수 있기를 바랍니다.

위 내용은 Docker Compose, Nginx 및 MariaDB의 완벽한 조합: PHP 애플리케이션 배포 모범 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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