>  기사  >  백엔드 개발  >  Docker Compose, Nginx 및 MariaDB를 사용하여 PHP 애플리케이션의 그레이스케일 게시 구현

Docker Compose, Nginx 및 MariaDB를 사용하여 PHP 애플리케이션의 그레이스케일 게시 구현

WBOY
WBOY원래의
2023-10-12 09:31:41987검색

使用Docker Compose、Nginx和MariaDB实现PHP应用程序的灰度发布

Docker Compose, Nginx 및 MariaDB를 사용하여 PHP 애플리케이션의 그레이스케일 릴리스 구현

그레이스케일 릴리스는 프로덕션 환경에 새 버전을 점진적으로 도입하여 릴리스 위험을 완화하는 소프트웨어 릴리스 전략입니다. 실제 애플리케이션에서는 Docker Compose를 사용하여 컨테이너화된 애플리케이션을 관리하고 Nginx 로드 밸런싱과 MariaDB를 결합하여 그레이스케일 게시를 달성할 수 있습니다.

Docker Compose는 다중 컨테이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구입니다. 이를 통해 YAML 파일을 사용하여 애플리케이션의 구성 요소, 네트워크 구성 및 다양한 구성 요소 간의 관계를 정의할 수 있습니다.

먼저 Docker Compose 구성 파일 docker-compose.yml을 만들어야 합니다. 이 파일에서는 Nginx, PHP 및 MariaDB에 대한 세 가지 서비스를 정의해야 합니다.

다음은 간단한 PHP 애플리케이션의 그레이스케일 게시를 구현하는 데 사용되는 docker-compose.yml 파일의 예입니다.

version: '3.8'
services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 80
    networks:
      - backend
      - frontend
  web_new:
    build:
      context: .
      dockerfile: Dockerfile-new
    ports:
      - 8080
    networks:
      - backend
      - frontend
  nginx:
    image: nginx:latest
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    ports:
      - 8000:80
    networks:
      - frontend
  db:
    image: mariadb:latest
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=mydatabase
    networks:
      - backend

networks:
  backend:
  frontend:

이 구성 파일에서는 두 가지 다른 버전의 PHP에 해당하는 두 개의 웹 서비스(web 및 web_new)를 정의합니다. 응용 프로그램. 서로 다른 포트를 정의하여 이를 구별하고 백엔드 및 프런트엔드 네트워크 모두에 배포합니다.

또한 nginx 서비스를 정의하고 Nginx를 로드 밸런서로 사용하고 이를 호스트의 포트 8000에 매핑했습니다. Nginx의 로드 밸런싱 규칙을 구성하려면 nginx.conf 파일을 컨테이너의 /etc/nginx/nginx.conf 위치에 매핑해야 합니다.

마지막으로 애플리케이션의 데이터를 저장하기 위해 MariaDB 서비스(db)를 정의합니다. 환경 변수를 설정하여 루트 사용자의 비밀번호와 기본 데이터베이스를 구성합니다.

다음으로 Nginx의 로드 밸런싱 규칙을 구성하기 위해 nginx.conf 파일을 생성해야 합니다. 이 파일은 docker-compose.yml 파일과 동일한 디렉터리에 있어야 합니다. 다음은 nginx.conf 파일의 예입니다.

worker_processes auto;
events {
    worker_connections 1024;
}

http {
    upstream app {
        zone blue 64k;
        server web:80;
        server web_new:8080 backup;
    }
    
    server {
        listen 80;
        
        location / {
            proxy_pass http://app;
        }
    }
}

이 구성 파일에서는 먼저 두 개의 백엔드 서버(web 및 web_new)를 지정하는 app이라는 업스트림 블록을 정의합니다. 이 예에서는 web_new를 백업 서버로 사용합니다.

그런 다음 포트 80에서 수신 대기하고 모든 요청을 Proxy_pass 지시어를 통해 앱 업스트림 블록으로 전달하는 서버 블록을 정의합니다. 이러한 방식으로 Nginx는 로드 밸런싱 정책에 따라 요청을 다른 백엔드 서버에 분산합니다.

이제 docker-compose up 명령을 실행하여 애플리케이션을 시작할 수 있습니다. 그러면 docker-compose.yml 파일을 기반으로 해당 컨테이너가 생성되고 시작됩니다.

컨테이너가 성공적으로 시작되면 http://localhost:8000을 방문하여 PHP 애플리케이션에 액세스할 수 있습니다. Nginx는 로드 밸런싱 규칙에 따라 요청을 다양한 백엔드 서버에 분산합니다.

그레이스케일 릴리스 프로세스 중에 점차적으로 PHP 애플리케이션의 새 버전으로 트래픽을 전달할 수 있습니다. nginx.conf 파일의 업스트림 규칙을 점진적으로 수정하여 이를 달성할 수 있습니다. 예를 들어, 결국 모든 트래픽이 새 버전으로 전달될 때까지 web_new 서버의 가중치를 점진적으로 늘릴 수 있습니다.

Docker Compose, Nginx 및 MariaDB를 사용하면 PHP 애플리케이션의 그레이스케일 게시를 쉽게 구현할 수 있습니다. 이러한 접근 방식은 릴리스와 관련된 위험을 줄이고 프로덕션 환경에서 새 버전의 애플리케이션 성능과 안정성을 효과적으로 테스트하는 데 도움이 됩니다.

이는 단지 예시일 뿐이며 실제 구성은 특정 애플리케이션 및 요구 사항에 따라 달라질 수 있습니다. 실제 애플리케이션에서는 더 복잡한 로드 밸런싱 전략을 사용하고, 더 많은 환경 변수를 구성하고, 더 많은 네트워크 구성을 처리해야 할 수도 있습니다.

위 내용은 Docker Compose, Nginx 및 MariaDB를 사용하여 PHP 애플리케이션의 그레이스케일 게시 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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