Docker Compose로 WordPress와 MySQL 데이터베이스 구성하기

Docker Compose를 활용해 WordPress 웹사이트와 MySQL 데이터베이스 서비스를 컨테이너로 쉽고 안전하게 구축하는 방법을 단계별로 안내합니다.

핵심 요약

Docker Compose를 사용하면 WordPress와 MySQL 데이터베이스를 단 하나의 설정 파일로 관리할 수 있습니다. 복잡한 수동 설치 과정 없이 명령어 몇 번으로 독립된 개발 환경이나 실서비스 환경을 빠르게 구축하는 방법을 알아봅니다.

준비 사항

실습을 진행하기 전에 시스템에 Docker와 Docker Compose가 설치되어 있어야 합니다. 터미널에서 아래 명령어를 입력해 정상적으로 설치되었는지 확인해 주세요.

BASH

docker --version
docker compose version

# 출력 결과에 버전 정보가 표시되어야 합니다.
# 예: Docker version 24.0.0, Docker Compose version v2.18.0

단계별 설정 절차

프로젝트를 위한 디렉토리를 생성하고, 그 안에 도커 컴포즈 설정 파일을 작성합니다.

  1. 작업 디렉토리 생성 및 이동하기:
    1. 터미널을 열고 mkdir my-wordpress-site 명령어로 폴더를 만듭니다.
    2. cd my-wordpress-site 명령어로 해당 폴더로 이동합니다.
    3. 빈 텍스트 편집기나 IDE로 docker-compose.yml 파일을 생성합니다.

docker-compose.yml 파일 작성

아래 설정은 공식 WordPress 이미지와 MySQL 5.7(또는 8.0) 이미지를 연결하는 표준적인 구성입니다. 데이터 유지를 위해 볼륨(Volume) 설정이 포함되어 있습니다.

docker-compose.ymlYAML

version: '3.8'

services:
  db:
    image: mysql:8.0
    container_name: wp_db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: secretpassword
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wp_user
      MYSQL_PASSWORD: wp_password
    volumes:
      - db_data:/var/lib/mysql

  wordpress:
    image: wordpress:latest
    container_name: wp_site
    restart: always
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: wp_user
      WORDPRESS_DB_PASSWORD: wp_password
    volumes:
      - wp_data:/var/www/html

volumes:
  db_data:
  wp_data:

주의

실제 운영 환경에서는 root 비밀번호와 데이터베이스 비밀번호를 강력한 문자열로 변경하고, 환경 변수 파일(.env)을 분리하여 관리하는 것이 안전합니다.

작성된 docker-compose.yml 파일은 MySQL 데이터베이스와 워드프레스 서비스를 연결하고 볼륨을 설정하여 데이터를 안전하게 보존합니다.

서비스 실행 및 확인

설정 파일이 준비되었다면 아래 명령어로 컨테이너를 백그라운드에서 실행합니다.

BASH

docker compose up -d

컨테이너가 정상적으로 실행되면 웹 브라우저를 열고 주소창에 http://localhost:8080 을 입력합니다. WordPress 초기 설정 화면이 나타나면 성공입니다.

문제 해결 및 자주 묻는 질문

웹 브라우저에서 사이트에 접속할 수 없습니다.

포트 8080이 이미 다른 프로그램에서 사용 중인 경우, docker-compose.yml 파일의 ports 항목을 “8000:80″과 같이 사용 가능한 다른 포트로 변경한 뒤 다시 실행해 보세요.

데이터베이스 연결 오류가 발생합니다.

db 서비스 컨테이너가 완전히 부팅되기 전에 wordpress 컨테이너가 데이터베이스 연결을 시도해서 발생할 수 있습니다. restart: always 설정이 되어 있으므로 잠시 기다리거나 docker compose restart 명령어로 재시작하면 해결됩니다.

컨테이너를 종료하면 데이터가 삭제되나요?

데이터를 보존한 채로 컨테이너를 내리려면 docker compose down 명령어를 사용합니다. 볼륨(데이터)까지 완전히 삭제하려면 docker compose down -v 명령어를 사용하되, 데이터가 유실되므로 주의해야 합니다.

댓글 남기기

이메일 주소는 공개되지 않습니다.