
WPML for WooCommerce 5.5.2.2 – WooCommerce 10.3을 위한 중요 수정 사항
예정된 WooCommerce 10.3 릴리스에 상품 옵션 가격의 계산 오류를 유발하는 중요한 호환성 문제가 있습니다.
Docker Compose, Xdebug 및 PhpStorm을 사용하면 운영 서버를 미러링하는 재현 가능하고 격리되며 쉽게 관리할 수 있는 로컬 개발 환경을 구축하여 WordPress 프로젝트의 품질을 높일 수 있습니다.
동료 WordPress 개발자 및 고급 사용자 여러분, 안녕하세요! 오늘은 Docker Compose를 사용하여 로컬 WordPress 개발 환경을 설정하는 포괄적이면서도 간단한 튜토리얼을 공유하게 되어 기쁩니다. 최근 역동적인 OnTheGoSystems 팀의 일원이 되면서 제가 편안하게 느끼는 작업 방식을 그대로 가져오기로 했으며, 이 설정이 바로 그 결과물입니다.
목표는 간단했습니다. 공식 WordPress Docker 이미지에 Xdebug 및 WP-CLI를 통합하여 개발 도구를 세부적으로 제어할 수 있는 설정을 개발하는 것이었습니다. 이 설정은 완전히 새로운 것을 만드는 것이 아니라 개인의 선호도와 작업 스타일에 맞게 사용자 정의하는 것입니다. 이 가이드가 유사한 환경을 구성하는 데 도움이 되어 WordPress 개발 여정을 향상시킬 수 있기를 바랍니다.
이 튜토리얼을 최대한 활용하려면 다음 종속성을 설치해야 합니다.
목표는 격리되고 재현 가능하며 쉽게 관리할 수 있는 로컬 WordPress 개발 환경을 구축하는 것입니다. Docker는 이 설정의 중추를 형성하여 애플리케이션을 포함하고 관리하는 인프라를 제공합니다. Xdebug 및 PhpStorm은 이 퍼즐의 보완적인 조각으로, 향상된 PHP 코드 개발 및 디버깅 기능을 제공합니다.
공식 WordPress Docker 이미지를 확장하는 Dockerfile을 작성하는 것부터 시작하겠습니다. WordPress 개발 및 디버깅 작업에 필수적인 도구인 Xdebug 및 WP-CLI를 통합하여 이 이미지를 향상시킬 것입니다.
다음으로 Docker Compose 파일을 작성하여 WordPress 및 MySQL이라는 두 가지 주요 서비스를 오케스트레이션합니다. 믿기지 않겠지만, 기본적으로 이것이 전부입니다!
이 설정의 장점은 운영 서버를 미러링할 뿐만 아니라 쉽게 복제할 수 있는 로컬 개발 환경을 생성한다는 것입니다. 즉, 여러 환경이나 컴퓨터에서 정확한 설정을 쉽게 복제하여 일관성을 보장하고 설정 관련 문제를 줄일 수 있습니다.
새로운 Dockerfile을 생성하는 것부터 시작합니다. 이 파일은 Docker에 이미지를 빌드하는 방법을 지시합니다. 다음은 제가 일반적으로 시작하는 기본 설정입니다.
# Use the official WordPress image as a parent image
FROM wordpress:latest
# Install Xdebug
RUN pecl install xdebug
# Install WP-CLI
RUN curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar && \
chmod +x wp-cli.phar && \
mv wp-cli.phar /usr/local/bin/wp
# Copy xdebug.ini into the container
COPY xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
이 Dockerfile에서는 공식 WordPress 이미지에서 시작합니다. 그런 다음 명확성과 유지 관리성을 위해 Xdebug 및 WP-CLI를 별도로 설치합니다. Xdebug 구성 파일(xdebug.ini)은 컨테이너의 적절한 디렉터리에 복사됩니다. 이것이 로컬 WordPress 개발 환경을 위한 제 기본 설정의 기초를 형성합니다.
이제 Docker 이미지에 Xdebug를 설치했으므로 로컬 개발 환경에서 작동하도록 구성해야 합니다. 여기에는 다음 설정이 포함된 xdebug.ini 파일을 생성하는 작업이 포함됩니다.
ini zend_extension=xdebug xdebug.mode=debug xdebug.client_port=9003 xdebug.start_with_request=yes
이러한 설정은 Xdebug 확장 프로그램을 활성화하고 각 요청에 대해 디버깅을 시작하도록 설정하며 연결해야 하는 클라이언트 포트(이 경우 9003)를 정의합니다. 아직 client_host를 지정하지 않은 것을 눈치채셨을 수 있지만 걱정하지 마세요. 설정 프로세스에서 곧 사용될 것입니다.
다음으로 WordPress 및 MySQL 서비스를 설정하는 docker-compose.yml 파일을 생성합니다.
yaml
version: '3'
services:
# MySQL Service
mysql:
image: mysql:latest
container_name: mysql_container
restart: always
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
# WordPress Service
wordpress:
depends_on:
- mysql
image: wordpress:latest
container_name: wp_container
volumes:
- ./wp_data:/var/www/html
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DEBUG: 1
XDEBUG_CONFIG: client_host=host.docker.internal
ports:
- "8000:8000"
volumes:
db_data:
이 파일에서는 MySQL 및 WordPress라는 두 가지 서비스를 정의했습니다. 두 서비스 모두 더 쉽게 참조하고 관리할 수 있도록 고유한 컨테이너 이름을 가지고 있습니다.
restart: always 지시문은 서비스가 예기치 않게 중지될 경우 항상 다시 시작되도록 보장합니다. 수동으로 중지된 경우 컨테이너를 수동으로 다시 시작할 때만 다시 시작됩니다.
MySQL 서비스는 Docker 볼륨(db_data)을 마운트하여 컨테이너가 삭제되더라도 영구 스토리지를 보장합니다. WordPress 서비스의 경우 로컬 디렉터리(./wp_data)를 컨테이너에 마운트합니다. 즉, 로컬 시스템의 WordPress 파일에 대한 모든 변경 사항이 컨테이너에 반영됩니다.
WordPress 서비스에 두 가지 추가 환경 변수를 추가했습니다. WordPress 디버깅을 활성화하는 WORDPRESS_DEBUG와 Xdebug의 클라이언트 호스트를 지정하는 XDEBUG_CONFIG입니다. client_host는 호스트의 내부 IP 주소로 라우팅되는 특수 DNS 이름인 host.docker.internal로 설정되어 Xdebug가 호스트의 IDE와 통신할 수 있도록 합니다.
client_host 설정은 Windows 및 macOS에 맞게 조정되었습니다. Linux의 경우 일반적인 대안은 host.docker.internal을 터미널 명령 ip addr show를 통해 얻을 수 있는 컴퓨터의 실제 IP 주소로 바꾸는 것입니다.
Dockerfile, Xdebug 구성 파일 및 Docker Compose 파일이 준비되면 로컬 WordPress 개발 환경을 실행할 차례입니다.
이렇게 하려면 터미널에서 Docker Compose 파일이 포함된 디렉터리로 이동하여 다음 명령을 실행하기만 하면 됩니다.
bash docker-compose up -d
이 명령은 Docker에 백그라운드에서 서비스를 시작하도록 지시합니다.
성공적으로 실행되면 http://localhost:8000을 통해 액세스할 수 있는 로컬 컴퓨터에서 실행되는 WordPress 사이트가 생성됩니다. WordPress PHP 파일에 대한 모든 변경 사항이 이제 이 사이트에 반영되어 WordPress 애플리케이션을 개발하고 디버깅하는 쉽고 효과적인 방법을 제공합니다.
또한 MySQL 서비스도 실행되어 포트 3306에서 액세스할 수 있습니다. 이는 WordPress 애플리케이션을 위한 완벽하게 작동하는 MySQL 데이터베이스를 제공하여 개발 요구 사항에 맞는 실제 환경을 복제합니다.
PHP 구성에 대해 좀 더 깊이 알아보고 싶은 분들을 위해 Docker 이미지에 phpinfo.php 파일을 도입할 수 있습니다. 이 파일에 액세스하면 PHP 설정에 대한 포괄적인 개요가 표시됩니다.
phpinfo.php 파일을 추가하려면 먼저 Dockerfile과 동일한 디렉터리에 생성해야 합니다. 파일에는 다음 PHP 코드가 포함되어야 합니다.
<?php phpinfo(); ?>
다음으로 Dockerfile에 다음 줄을 추가합니다.
# Bonus: Copy phpinfo.php into the container COPY phpinfo.php /var/www/html/phpinfo.php
이 명령은 phpinfo.php 파일을 Docker 이미지 내의 WordPress 루트 디렉터리로 복사합니다.
이러한 변경 사항이 적용되도록 하려면 Docker 이미지를 다시 빌드하고 Docker Compose 서비스를 다시 시작해야 합니다. 터미널에서 다음 명령을 실행하세요.
bash docker-compose down docker-compose up -d --build
docker-compose down 명령은 현재 Docker 컨테이너를 중지하고 제거합니다. 그런 다음 docker-compose up -d –build는 새로 추가된 phpinfo.php 파일로 Docker 이미지를 다시 빌드하고 백그라운드에서 WordPress 및 MySQL 서비스를 다시 시작합니다.
이제 웹 브라우저에서 http://localhost:8000/phpinfo.php로 이동하여 phpinfo.php 파일에 액세스할 수 있습니다. 여기에서 PHP 구성을 요약한 자세한 페이지를 볼 수 있으며, 이는 디버깅 및 확인을 위한 귀중한 리소스가 될 수 있습니다.
이제 Docker, Xdebug 및 PhpStorm을 사용하여 로컬 WordPress 개발 환경 설정을 마쳤으므로 WordPress 사이트 디버깅을 시작할 수 있습니다. 시작하는 방법에 대한 간단한 요약은 다음과 같습니다.
이 튜토리얼을 마무리하면서 제 여정에서 그랬던 것처럼 여러분에게도 귀중한 리소스가 되기를 바랍니다. phpinfo.php 파일을 추가하여 수행한 것처럼 이 설정을 사용자 정의하는 기능은 무수히 많은 가능성을 열어주어 개발 프로세스를 더욱 강력하고 효율적으로 만듭니다. 모든 코드는 이 GitHub 리포지토리에서 확인할 수 있습니다. 주저하지 말고 가져와서 사용해 보고 개선 사항을 제안해 주세요!
저는 개인적으로 Ubuntu OS를 사용하지만 이 설정의 장점은 Docker 덕분에 OS가 중요하지 않다는 것입니다! Docker는 모든 운영 체제에서 동일하게 실행될 수 있으므로 macOS, Windows 또는 Linux 중 무엇을 선호하든 설정 및 사용법은 동일합니다!
이 연습에 함께해 주셔서 감사합니다. 여러분의 경험이나 이 설정을 더욱 개선하기 위한 제안을 들을 수 있기를 바랍니다. 성장은 공유된 지식과 협업 정신을 바탕으로 이루어진다는 점을 기억하세요.
즐겁게 코딩하시고, 앞으로도 함께 멋진 WordPress 경험을 만들어가길 바랍니다!