docker-compose.yml

version: '3.8'

services:
  wordpress:                            # WordPress 서비스 정의
    image: wordpress:php8.1-fpm         # WordPress 공식 이미지를 사용 (PHP-FPM 기반)
    container_name: wordpress           # 컨테이너 이름 지정
    environment:                        # WordPress에서 사용할 데이터베이스 정보 환경 변수로 설정
      WORDPRESS_DB_HOST: db:3306        # 데이터베이스 컨테이너의 호스트명 및 포트
      WORDPRESS_DB_USER: wordpress      # 데이터베이스 사용자 이름
      WORDPRESS_DB_PASSWORD: wordpress  # 데이터베이스 사용자 비밀번호
      WORDPRESS_DB_NAME: wordpress      # 사용할 데이터베이스 이름
    volumes:                            # WordPress 데이터를 호스트에 영구적으로 저장하기 위해 볼륨 사용
      - wordpress_data:/var/www/html    # WordPress 파일이 저장될 경로
    depends_on:                         # db 서비스가 준비된 후 실행되도록 설정
      - db

  db:                                     # 데이터베이스 서비스 정의
    image: mysql:5.7                      # MySQL 이미지 사용 (버전 5.7)
    container_name: wordpress_db          # 컨테이너 이름 지정
    environment:                          # MySQL 환경 변수 설정
      MYSQL_DATABASE: wordpress           # 생성할 기본 데이터베이스 이름
      MYSQL_USER: wordpress               # 데이터베이스 사용자 이름
      MYSQL_PASSWORD: wordpress           # 데이터베이스 사용자 비밀번호
      MYSQL_ROOT_PASSWORD: root_password  # MySQL 루트 사용자 비밀번호
    volumes:                              # 데이터베이스 데이터를 호스트에 영구적으로 저장하기 위해 볼륨 사용
      - db_data:/var/lib/mysql            # MySQL 데이터가 저장될 경로

  nginx:                                  # Nginx 서비스 정의
    image: nginx:latest                   # Nginx 이미지를 사용
    container_name: wordpress_nginx       # 컨테이너 이름 지정
    ports:                                # 호스트와 컨테이너 포트 매핑
      - "8080:80"                         # 호스트의 8080 포트를 컨테이너의 80 포트로 연결
    volumes:                              # Nginx 설정 파일과 WordPress 데이터 경로를 연결
      - wordpress_data:/var/www/html      # WordPress 파일 경로
      - ./nginx.conf:/etc/nginx/conf.d/default.conf  # 사용자 정의 Nginx 설정 파일
    depends_on:                           # WordPress 서비스가 준비된 후 실행되도록 설정
      - wordpress

volumes:                                  # 볼륨 정의
  wordpress_data:                         # WordPress 데이터를 위한 볼륨
  db_data:                                # 데이터베이스 데이터를 위한 볼륨