Docker Compose, Nginx 및 MariaDB의 표준: 확장 가능한 PHP 애플리케이션 클러스터 구축
소개
인터넷 애플리케이션의 지속적인 개발로 인해 점점 더 많은 웹사이트와 서비스에서 대량의 동시 요청과 데이터를 처리해야 합니다. 확장 가능한 애플리케이션 클러스터를 구축하는 것이 뜨거운 주제가 되었습니다. 이 기사에서는 Docker Compose, Nginx 및 MariaDB를 사용하여 확장 가능한 PHP 애플리케이션 클러스터를 구축하는 방법을 다룹니다. 특정 코드 예제를 사용하여 이 클러스터를 구성 및 관리하는 방법과 리소스의 동적 확장 및 로드 밸런싱을 달성하는 방법을 보여줍니다.
1. Docker Compose 구성
Docker Compose는 여러 Docker 컨테이너를 정의하고 실행하기 위한 도구입니다. 구성 파일을 통해 컨테이너 간의 종속성과 네트워크 연결을 관리할 수 있습니다. 애플리케이션 클러스터에서는 Docker Compose를 사용하여 Nginx, PHP 애플리케이션 및 MariaDB의 세 가지 컨테이너를 정의하고 관리합니다.
먼저 docker-compose.yml
파일을 생성하고 컨테이너 서비스를 정의해야 합니다. docker-compose.yml
文件,并定义我们的容器服务。
version: '3' services: nginx: image: nginx ports: - 80:80 depends_on: - php php: build: context: . dockerfile: Dockerfile.php volumes: - ./php:/var/www/html db: image: mariadb environment: MYSQL_ROOT_PASSWORD: example
在这个配置文件中,我们定义了三个服务:Nginx、PHP和MariaDB。Nginx容器使用官方的Nginx镜像,并将容器的80端口映射到主机的80端口。PHP容器使用我们自己的Dockerfile来构建,并将主机的./php
目录挂载到容器的/var/www/html
目录。MariaDB容器使用官方的MariaDB镜像,并设置了一个root密码。
二、Nginx的配置
Nginx是一个高性能的Web服务器和反向代理服务器,它可以用于直接提供静态资源,也可以用来反向代理到后端的PHP应用程序。在我们的集群中,Nginx将担当转发请求到后端PHP容器的角色。
我们需要在Nginx容器中配置一个虚拟主机,用于将请求转发到PHP应用程序的容器。在Nginx的配置文件中,我们可以使用upstream
指令来定义后端的PHP容器的地址,并使用proxy_pass
指令将请求转发到这个地址。
我们可以将以下配置添加到nginx.conf
文件中:
http { upstream php { server php:9000; } server { listen 80; location / { proxy_pass http://php; } } }
在这个配置中,我们使用upstream php
定义了一个名为php
的后端地址,并将请求转发到该地址上的9000端口。然后,我们在一个server
块中,设置了Nginx监听80端口,并将所有请求通过proxy_pass
指令转发给后端的PHP容器。
三、PHP应用程序的配置
在PHP应用程序的容器中,我们需要配置PHP解释器和应用程序代码。我们可以通过一个自定义的Dockerfile来构建这个容器,并在构建过程中安装必要的依赖项和扩展。
下面是一个示例的Dockerfile.php文件的内容:
FROM php:7.4-fpm WORKDIR /var/www/html COPY . . RUN apt-get update && apt-get install -y libpq-dev && docker-php-ext-install pdo_mysql pdo_pgsql
在这个Dockerfile中,我们使用官方的PHP 7.4-fpm镜像作为基础,设定工作目录为/var/www/html
,然后将主机的应用程序代码复制到容器中。最后,我们使用apt-get
docker-compose up -d
./php
디렉터리를 컨테이너의 /var/www/html
디렉터리에 마운트합니다. MariaDB 컨테이너는 공식 MariaDB 이미지를 사용하며 루트 비밀번호가 설정되어 있습니다.
2. Nginx 구성
upstream
지시문을 사용하여 백엔드 PHP 컨테이너의 주소를 정의하고 proxy_pass
지시문을 사용하여 요청을 이 주소로 전달할 수 있습니다. . 다음 구성을 nginx.conf
파일에 추가할 수 있습니다: docker-compose up -d --scale php=3
upstream php
를 사용하여 php <라는 파일을 정의합니다. /code>의 백엔드 주소를 찾아 해당 주소의 포트 9000으로 요청을 전달합니다. 그런 다음 <code>server
블록에서 포트 80에서 수신 대기하고 proxy_pass
지시문을 통해 모든 요청을 백엔드 PHP 컨테이너로 전달하도록 Nginx를 설정했습니다. 3. PHP 애플리케이션 구성PHP 애플리케이션 컨테이너에서 PHP 인터프리터와 애플리케이션 코드를 구성해야 합니다. 사용자 지정 Dockerfile을 통해 이 컨테이너를 빌드하고 빌드 프로세스 중에 필요한 종속성과 확장을 설치할 수 있습니다.
다음은 Dockerfile.php 파일 예시의 내용입니다.
docker-compose down
이 Dockerfile에서는 공식 PHP 7.4-fpm 이미지를 기본으로 사용하고 작업 디렉터리를 /var/www/html를 입력한 다음 호스트의 애플리케이션 코드를 컨테이너에 복사합니다. 마지막으로 <code>apt-get
명령을 사용하여 일부 PHP 확장을 설치했습니다.
위 내용은 Docker Compose, Nginx 및 MariaDB의 표준: 확장 가능한 PHP 애플리케이션 클러스터 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!