>  기사  >  백엔드 개발  >  Docker Compose, Nginx 및 MariaDB를 사용한 PHP 애플리케이션의 수평 확장

Docker Compose, Nginx 및 MariaDB를 사용한 PHP 애플리케이션의 수평 확장

WBOY
WBOY원래의
2023-10-12 11:22:561412검색

通过Docker Compose、Nginx和MariaDB实现PHP应用程序的水平扩展

Docker Compose, Nginx, MariaDB를 통한 PHP 애플리케이션의 수평적 확장

인터넷의 발달과 애플리케이션의 복잡성 증가로 인해 애플리케이션의 성능을 어떻게 효율적으로 확장할 것인가가 중요한 이슈가 되었습니다. 수평적 확장은 서버 인스턴스를 추가하여 애플리케이션의 처리 능력을 높이는 솔루션입니다. 이 기사에서는 Docker Compose, Nginx 및 MariaDB를 사용하여 PHP 애플리케이션의 수평 확장을 달성하는 방법을 소개하고 구체적인 코드 예제를 제공합니다.

환경 준비:
시작하기 전에 Docker 및 Docker Compose가 설치된 머신을 포함한 일부 환경을 준비해야 합니다. 아직 이러한 도구를 설치하지 않았다면 공식 웹사이트에서 관련 설치 가이드를 찾을 수 있습니다.

1단계: Docker Compose 파일 생성
먼저 docker-compose.yml이라는 파일을 생성하고 그 안에 서비스를 정의합니다. 다음은 샘플 작성 파일의 내용입니다.

version: '3.7'
services:
  web:
    build: ./web
    ports:
      - 80:80
    networks:
      - app-net
    depends_on:
      - db
  db:
    image: mariadb
    environment:
      - MYSQL_ROOT_PASSWORD=your_password
    networks:
      - app-net
networks:
  app-net:

위의 예에서는 web과 db라는 두 가지 서비스를 정의했습니다. 웹 서비스는 Nginx 및 PHP 애플리케이션을 실행하는 데 사용되며 db 서비스는 MariaDB 데이터베이스를 실행하는 데 사용됩니다.

2단계: Nginx 및 PHP 애플리케이션용 Dockerfile 만들기
이전 단계에서는 웹 서비스의 빌드 경로를 ./web으로 지정했습니다. 이제 Nginx 및 PHP 애플리케이션의 이미지를 빌드하기 위해 이 디렉터리에 Dockerfile을 만들어야 합니다. 다음은 간단한 Dockerfile 예입니다.

FROM nginx:latest

# 安装PHP和一些扩展
RUN apt-get update && 
    apt-get install -y php7.4-cli php7.4-fpm php7.4-mysql

# 复制PHP应用程序到容器中
COPY app /var/www/html

# 配置Nginx
COPY nginx.conf /etc/nginx/nginx.conf

# 启动Nginx和PHP-FPM
CMD service php7.4-fpm start && nginx -g "daemon off;"

위 예에서는 nginx:latest를 기본 이미지로 사용하고 여기에 PHP와 몇 가지 일반적인 확장 기능을 설치합니다. 그런 다음 PHP 애플리케이션을 컨테이너에 복사하고 사용자 정의된 nginx.conf 파일을 복사했습니다.

3단계: Nginx 구성 파일 만들기
이전 단계의 Dockerfile에서는 사용자 정의된 nginx.conf 파일을 사용했습니다. 이제 ./web 디렉터리에 이 파일을 만들고 Nginx 구성을 정의해야 합니다. 다음은 예제 nginx.conf 파일의 내용입니다.

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    server {
        listen  80;
        server_name  localhost;
        root  /var/www/html;
        index  index.php index.html;

        location ~ .php$ {
            fastcgi_pass  web:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include  fastcgi_params;
        }

        location / {
            try_files  $uri $uri/ /index.php?$query_string;
        }
    }
}

위 예제에서는 Nginx용 가상 호스트를 정의하고 요청을 web이라는 PHP-FPM 컨테이너로 전달합니다.

4단계: PHP 애플리케이션 만들기
이전 단계의 nginx.conf 구성 파일에서 PHP 애플리케이션의 루트 디렉터리를 /var/www/html로 지정했습니다. 이제 ./web 디렉토리 아래에 app이라는 폴더를 만들고 이 폴더에 PHP 애플리케이션의 코드를 넣어야 합니다.

5단계: 컨테이너 클러스터 시작
위의 준비가 완료되면 이제 컨테이너 클러스터를 시작할 수 있습니다. 터미널에서 docker-compose.yml이 있는 디렉터리를 입력하고 다음 명령을 실행합니다.

docker-compose up -d

이 명령은 웹 및 DB 서비스를 시작하고 app-net이라는 네트워크에 연결합니다. 웹 서비스는 외부로부터 HTTP 요청을 수신하기 위해 호스트 시스템의 포트 80을 바인딩합니다.

이 시점에서 우리는 Docker Compose, Nginx 및 MariaDB를 사용하여 PHP 애플리케이션의 수평 확장을 성공적으로 달성했습니다. 이제 다음 명령을 사용하여 애플리케이션을 확장할 수 있습니다.

docker-compose up --scale web=n

여기서 n은 확장할 웹 서비스 인스턴스 수입니다.

요약:
이 기사에서는 Docker Compose, Nginx 및 MariaDB를 사용하여 PHP 애플리케이션의 수평 확장을 달성하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 이러한 도구를 사용하면 증가하는 사용자 요구를 충족하기 위해 애플리케이션 성능을 빠르고 쉽게 확장할 수 있습니다. 이 글이 실무에 종사하는 모든 분들에게 도움이 되기를 바랍니다.

위 내용은 Docker Compose, Nginx 및 MariaDB를 사용한 PHP 애플리케이션의 수평 확장의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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