>백엔드 개발 >PHP 튜토리얼 >Docker Compose, Nginx 및 MariaDB를 사용한 PHP 애플리케이션의 빠른 마이그레이션

Docker Compose, Nginx 및 MariaDB를 사용한 PHP 애플리케이션의 빠른 마이그레이션

王林
王林원래의
2023-10-12 12:01:451147검색

通过Docker Compose、Nginx和MariaDB实现PHP应用程序的快速迁移

Docker Compose, Nginx 및 MariaDB를 통한 PHP 애플리케이션의 빠른 마이그레이션

클라우드 컴퓨팅의 지속적인 개발과 인기로 인해 점점 더 많은 애플리케이션이 컨테이너화를 사용하여 배포 및 관리되기 시작했습니다. Docker는 현재 가장 인기 있는 컨테이너화 플랫폼 중 하나로 빠르고 가벼운 애플리케이션 패키징 및 전달 솔루션을 제공합니다.

이 기사에서는 Docker Compose, Nginx 및 MariaDB의 세 가지 도구를 사용하여 PHP 애플리케이션을 빠르게 마이그레이션하는 방법을 소개합니다.

1. 환경 준비
시작하기 전에 Docker와 Docker Compose를 설치해야 합니다. Docker는 오픈 소스 컨테이너화 플랫폼이고 Docker Compose는 여러 Docker 컨테이너를 정의하고 실행하기 위한 도구입니다.

Docker 설치 방법은 공식 문서(https://docs.docker.com/get-docker/)를 참고하세요. Docker Compose 설치는 다음 명령을 사용하여 완료할 수 있습니다.

$ sudo pip install docker-compose

2. Docker Compose 파일 생성
Docker Compose는 YAML 형식 구성 파일을 사용하여 여러 컨테이너를 정의하고 관리합니다. docker-compose.yml이라는 파일을 만들고 그 안에 애플리케이션의 컨테이너를 정의해야 합니다.

다음은 간단한 예입니다.

version: '3'
services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    restart: always
    ports:
      - 80:80
    volumes:
      - ./web:/var/www/html
    depends_on:
      - db
  db:
    image: mariadb:latest
    restart: always
    environment:
      MYSQL_DATABASE: myapp
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword
      MYSQL_ROOT_PASSWORD: myrootpassword
    volumes:
      - ./db:/var/lib/mysql

이 예에서는 두 가지 서비스(웹 및 DB)를 정의했습니다. 웹 서비스는 PHP 애플리케이션을 실행하는 데 사용되고 db 서비스는 MariaDB 데이터베이스를 실행하는 데 사용됩니다.

  • 웹 서비스 구성 항목 설명:

    • build: 이미지 빌드를 위한 컨텍스트 경로와 빌드 파일을 지정합니다.
    • restart: 종료 후 컨테이너가 자동으로 다시 시작되도록 설정합니다.
    • ports: 컨테이너의 포트 80을 호스트의 포트 80에 매핑합니다.
    • volumes: 호스트의 웹 디렉터리를 컨테이너의 /var/www/html 디렉터리에 마운트합니다.
    • dependent_on: 웹 서비스는 db 서비스에 따라 다릅니다.
  • db 서비스 구성 항목 설명:

    • image: 사용할 MariaDB 이미지를 지정합니다.
    • restart: 종료 후 컨테이너가 자동으로 다시 시작되도록 설정합니다.
    • environment: 데이터베이스 이름, 사용자, 비밀번호 등을 포함한 MariaDB의 환경 변수를 설정합니다.
    • volumes: 호스트의 db 디렉터리를 컨테이너의 /var/lib/mysql 디렉터리에 마운트합니다.

3. Dockerfile 작성
Dockerfile은 Docker 이미지를 빌드하는 데 사용되는 파일입니다. 이는 이미지 구축 프로세스를 설명하는 일련의 지침을 정의합니다.

다음은 간단한 Dockerfile 예입니다.

FROM php:7.4-apache

RUN apt-get update && 
    apt-get install -y libpq-dev && 
    docker-php-ext-install pdo pdo_mysql pdo_pgsql && 
    a2enmod rewrite

WORKDIR /var/www/html

COPY . .

RUN chown -R www-data:www-data /var/www/html

이 Dockerfile은 공식 php:7.4-apache 이미지를 기반으로 하며 일부 종속성과 확장 기능을 설치하고 작업 디렉터리를 /var/www/html로 설정합니다. 마지막으로 COPY 명령을 사용하여 현재 디렉터리의 모든 파일을 컨테이너의 /var/www/html 디렉터리에 복사하고 /var/www/html 디렉터리의 권한을 설정합니다.

4. 컨테이너 시작
위의 준비를 완료한 후 다음 명령을 사용하여 컨테이너를 시작할 수 있습니다.

$ docker-compose up -d

이 명령은 우리가 정의한 두 개의 컨테이너(web 및 db)를 시작하고 백그라운드에서 실행합니다.

5. Nginx 역방향 프록시 구성
기본적으로 Docker Compose는 각 서비스에 대한 기본 네트워크를 생성합니다. 컨테이너 이름을 도메인 이름으로 사용하여 컨테이너의 서비스에 액세스할 수 있습니다.

그러나 애플리케이션을 더 잘 제어하고 관리하기 위해 Nginx를 역방향 프록시로 사용하여 요청을 해당 컨테이너로 전달할 수 있습니다.

먼저 Nginx를 설치하고 구성해야 합니다. 다음 명령을 통해 설치할 수 있습니다.

$ sudo apt-get install nginx

그런 다음 Nginx 구성 파일에 다음 콘텐츠를 추가합니다.

server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://web:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

이 구성 파일에서는 요청을 Proxy_pass 지시문을 통해 web이라는 컨테이너의 포트 80으로 전달합니다. 프록시 관련 헤더 정보를 설정합니다.

마지막으로 Nginx 서비스를 다시 시작하여 구성을 적용합니다.

$ sudo service nginx restart

6. 결론
Docker Compose, Nginx 및 MariaDB를 사용하면 PHP 애플리케이션을 빠르고 쉽게 마이그레이션하고 배포할 수 있습니다. Docker는 애플리케이션의 실행 환경을 호스트 환경과 분리하는 안정적이고 반복 가능한 환경을 제공합니다. Nginx의 역방향 프록시 기능을 사용하면 트래픽 전달 및 로드 밸런싱을 쉽게 수행할 수 있습니다. MariaDB는 안정적인 고성능 관계형 데이터베이스를 제공합니다.

이 기사가 PHP 애플리케이션의 신속한 마이그레이션에 도움과 지침을 제공할 수 있기를 바랍니다. 질문이나 우려사항이 있으시면 언제든지 문의해 주세요. Docker로 애플리케이션을 구축하고 관리하는 즐거움을 누려보세요!

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

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