본문 바로가기
코어-테크 : 트러블 슈팅 노트

WordPress를 Docker에 설치하는 방법 : 홈서버에서 직접 구축하기

by 크리에이터 독타 (Creator Dokta) 2026. 6. 30.

 

 

※ 이 글은 운영자가 직접 Intel N100 홈서버에서 WordPress와 Docker 기반 서비스를 운영하며 정리한 경험을 바탕으로 작성했습니다. 글의 문장 정리와 구성에는 AI 도구의 도움을 약간 받았지만, 최종 내용은 운영자가 직접 검토하고 확인했습니다.

WordPress를 Docker에 설치하는 방법 : 홈서버에서 직접 구축하기

도입

지난 글에서는 왜 셀프 호스팅을 시작하는지, 그리고 클라우드 대신 내 서버를 직접 운영한다는 것이 어떤 의미인지 살펴봤습니다. 셀프 호스팅은 단순히 서버 한 대를 갖는 일이 아니라, 운영자가 직접 시스템을 이해하고 관리하는 과정이라는 점이 핵심이었습니다.

이번에는 그 흐름을 실제 구축 단계로 이어가 보겠습니다. 홈서버에서 가장 많이 시도해볼 수 있는 서비스 중 하나가 WordPress입니다. 블로그, 기록장, 내부 문서, 개인 웹사이트 등으로 활용할 수 있고, Docker 환경에서도 비교적 쉽게 구성할 수 있습니다.

다만 여기서 중요한 점이 있습니다. WordPress 설치 자체는 어렵지 않을 수 있습니다. 하지만 셀프 호스팅에서 중요한 것은 설치 버튼을 누르는 것이 아니라, 운영 가능한 구조로 설치하는 것입니다. 데이터가 어디에 저장되는지, MariaDB와 어떻게 연결되는지, 다시 시작해도 서비스가 살아나는지, 백업할 수 있는 구조인지까지 함께 봐야 합니다.

이번 글에서는 Docker Compose를 이용해 WordPress와 MariaDB를 연결하는 기본 흐름을 정리하고, 설치 후 운영자가 확인해야 할 지점을 함께 살펴보겠습니다.

Intel N100 홈서버에서 Docker Compose를 이용해 WordPress와 MariaDB를 설치하고 Volume, Network, 포트 설정까지 구성하는 전체 구축 흐름 인포그래픽
Intel N100 홈서버에서 Docker Compose 기반으로 WordPress와 MariaDB를 구축하는 전체 과정을 정리한 인포그래픽입니다.

※ 다이어그램은 운영 환경 설계를 바탕으로 AI 도구를 활용해 제작했으며, 최종 구성과 내용은 운영자가 직접 검수했습니다.
출처: 디지털 장난감

본문

① 왜 Docker로 WordPress를 설치할까?

WordPress는 웹호스팅 서비스를 이용하면 몇 번의 클릭만으로 설치할 수 있습니다. 그래서 처음에는 굳이 Docker까지 써야 하나 싶은 생각이 들 수 있습니다. 하지만 홈서버에서 직접 운영해보면 Docker의 장점이 조금씩 보입니다.

Docker를 사용하면 WordPress와 MariaDB를 각각 독립된 컨테이너로 나누어 관리할 수 있습니다. WordPress 컨테이너는 웹 애플리케이션을 담당하고, MariaDB 컨테이너는 데이터를 저장합니다. 두 서비스가 분리되어 있으면 문제를 확인할 때도 어디에서 문제가 생겼는지 나누어 볼 수 있습니다.

또한 Docker Compose를 사용하면 여러 컨테이너를 하나의 파일로 관리할 수 있습니다. WordPress, MariaDB, 포트, Volume, 환경변수를 한곳에 정리해두면 나중에 서버를 다시 구성할 때도 훨씬 수월합니다.

  • WordPress와 MariaDB를 분리해서 운영할 수 있습니다.
  • 컨테이너 단위로 재시작과 점검이 가능합니다.
  • Compose 파일 하나로 전체 구성을 기록할 수 있습니다.
  • Volume을 통해 데이터를 유지할 수 있습니다.
  • 백업과 복구 구조를 설계하기 쉽습니다.

즉 Docker는 단순한 설치 도구라기보다, WordPress를 안정적으로 운영하기 위한 기본 틀에 가깝습니다.

② 설치 전에 준비해야 할 것

WordPress를 Docker로 설치하기 전에 기본 준비가 필요합니다. 먼저 Ubuntu 서버가 정상적으로 설치되어 있어야 하고, Docker와 Docker Compose를 사용할 수 있어야 합니다. 그리고 WordPress가 사용할 데이터베이스로 MariaDB 컨테이너를 함께 구성해야 합니다.

이번 글에서는 WordPress와 MariaDB를 같은 Docker Compose 파일 안에서 구성하는 방식으로 생각해보겠습니다. 실제 운영 환경에서는 이미 사용 중인 MariaDB를 연결할 수도 있고, 별도의 데이터베이스 컨테이너를 사용할 수도 있습니다. 중요한 것은 WordPress가 어떤 DB를 바라보는지 명확히 아는 것입니다.

준비 항목 역할 확인할 점
Ubuntu Server 홈서버 운영체제 SSH 접속과 기본 패키지 상태
Docker 컨테이너 실행 환경 docker ps 실행 가능 여부
Docker Compose 여러 컨테이너 구성 관리 docker compose version 확인
WordPress 웹사이트 애플리케이션 포트와 Volume 설정
MariaDB 데이터베이스 DB 이름, 사용자, 비밀번호

또 하나 중요한 것은 폴더 구조입니다. Compose 파일, WordPress 파일, MariaDB 데이터, 백업 위치를 아무 곳에나 두면 나중에 관리가 어려워집니다. 처음부터 프로젝트 폴더를 정해두는 것이 좋습니다.

mkdir -p ~/docker/wordpress
cd ~/docker/wordpress

이렇게 WordPress 관련 파일을 한곳에 모아두면 나중에 설정 파일을 찾거나 백업 구조를 정리할 때 편합니다.

③ Docker Compose 파일 작성하기

이제 WordPress와 MariaDB를 함께 실행할 Docker Compose 파일을 작성합니다. 파일 이름은 보통 docker-compose.yml 또는 compose.yml을 사용합니다.

services:
  wordpress:
    image: wordpress:latest
    container_name: wordpress
    restart: unless-stopped
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: mariadb
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: wordpress_user
      WORDPRESS_DB_PASSWORD: wordpress_password
    volumes:
      - ./wordpress_data:/var/www/html
    depends_on:
      - mariadb

  mariadb:
    image: mariadb:latest
    container_name: mariadb
    restart: unless-stopped
    environment:
      MARIADB_DATABASE: wordpress
      MARIADB_USER: wordpress_user
      MARIADB_PASSWORD: wordpress_password
      MARIADB_ROOT_PASSWORD: root_password
    volumes:
      - ./mariadb_data:/var/lib/mysql

이 예시는 기본 구조를 보여주기 위한 형태입니다. 실제 운영에서는 비밀번호를 더 안전하게 관리하고, 필요하다면 .env 파일로 분리하는 것이 좋습니다. 중요한 것은 WordPress의 DB 설정과 MariaDB의 DB 설정이 서로 일치해야 한다는 점입니다.

  • WORDPRESS_DB_HOST는 MariaDB 서비스 이름과 맞아야 합니다.
  • WORDPRESS_DB_NAME은 MariaDB에서 생성되는 DB 이름과 같아야 합니다.
  • WORDPRESS_DB_USERMARIADB_USER가 일치해야 합니다.
  • 비밀번호도 WordPress와 MariaDB 양쪽에서 같아야 합니다.
  • Volume 경로를 확인해야 데이터가 유지됩니다.

Compose 파일은 단순한 실행 파일이 아니라 운영 구조를 기록하는 문서이기도 합니다. 나중에 문제가 생겼을 때 가장 먼저 확인하게 되는 파일 중 하나입니다.

④ WordPress 컨테이너 실행하기

Compose 파일을 작성했다면 컨테이너를 실행합니다.

docker compose up -d

-d 옵션은 백그라운드에서 실행하라는 의미입니다. 실행 후에는 컨테이너 상태를 확인합니다.

docker compose ps

WordPress와 MariaDB 컨테이너가 모두 실행 중인지 확인합니다. 만약 컨테이너가 반복해서 재시작된다면 환경변수나 Volume, 포트 충돌 문제를 의심해볼 수 있습니다.

설정 예시대로라면 브라우저에서 다음 주소로 접속할 수 있습니다.

http://서버IP:8080

정상적으로 접속되면 WordPress 초기 설치 화면이 나타납니다. 이 단계까지 오면 WordPress 컨테이너와 MariaDB 컨테이너가 기본적으로 연결된 것입니다.

⑤ WordPress 초기 설정하기

브라우저에서 WordPress 설치 화면이 나타나면 사이트 제목, 관리자 계정, 비밀번호, 이메일 주소, 언어를 설정합니다. 이 과정은 어렵지 않지만 운영 관점에서는 몇 가지 주의할 점이 있습니다.

먼저 관리자 계정 이름은 너무 단순하게 만들지 않는 것이 좋습니다. 예를 들어 admin 같은 계정명은 피하는 편이 안전합니다. 비밀번호도 충분히 길고 예측하기 어려운 값을 사용하는 것이 좋습니다.

설치 후에는 바로 글을 쓰기보다 기본 설정을 먼저 확인합니다.

설정 항목 확인 이유 예시
시간대 예약 발행과 로그 시간 기준 Asia/Seoul
고유주소 글 URL 구조 글 이름 방식
관리자 이메일 알림 수신 실제 사용하는 이메일
기본 테마 화면 구성 필요 없는 테마 정리
기본 플러그인 불필요한 기능 제거 사용하지 않는 플러그인 삭제

WordPress는 설치 직후보다 설치 후 기본 정리 과정이 더 중요할 때가 많습니다. 처음부터 불필요한 플러그인과 테마를 줄여두면 관리가 훨씬 편해집니다.

⑥ 운영을 위한 기본 점검

WordPress 설치 화면이 정상적으로 보인다고 해서 모든 준비가 끝난 것은 아닙니다. 홈서버 운영에서는 설치 후 점검이 필요합니다.

먼저 컨테이너 상태를 확인합니다.

docker compose ps

그다음 로그를 확인해 오류가 반복되고 있지 않은지 살펴봅니다.

docker compose logs wordpress
docker compose logs mariadb

Volume도 확인해야 합니다. WordPress 파일과 MariaDB 데이터가 컨테이너 내부에만 저장되면 컨테이너를 삭제했을 때 데이터가 사라질 수 있습니다. 그래서 반드시 외부 폴더나 Docker Volume에 연결되어 있는지 확인해야 합니다.

ls -lh ./wordpress_data
ls -lh ./mariadb_data

가능하다면 컨테이너를 재시작해보고 WordPress가 다시 정상적으로 올라오는지도 확인합니다.

docker compose restart

이런 작은 점검이 나중에 장애를 줄이는 데 도움이 됩니다. 셀프 호스팅에서 설치는 끝이 아니라 운영의 시작입니다.

운영 철학

WordPress 설치의 목표는 화면을 띄우는 것이 아니라, 다시 시작해도 살아나는 운영 구조를 만드는 것입니다.

운영노트

처음 Docker Compose를 사용할 때는 설정 파일이 낯설게 느껴졌습니다. 특히 WordPress와 MariaDB를 연결하는 환경변수에서 자주 헷갈렸습니다. 컨테이너는 실행 중인데 WordPress 화면에서 데이터베이스 연결 오류가 나타나는 경우도 있었습니다.

초기 시행착오 원인 운영 후 배운 점
DB 연결 실패 DB 이름과 사용자 불일치 환경변수는 양쪽을 함께 확인해야 함
페이지 접속 실패 포트 설정 오류 호스트 포트와 컨테이너 포트 구분 필요
데이터 유지 안 됨 Volume 설정 부족 데이터 저장 위치를 먼저 정해야 함
재시작 후 오류 설정 파일 관리 미흡 Compose 파일이 운영 문서 역할을 함

이 과정을 겪으면서 Docker는 단순한 설치 도구가 아니라 서비스를 체계적으로 운영하기 위한 구조라는 것을 이해하게 되었습니다. 지금은 새로운 서비스를 추가할 때도 먼저 Compose 파일부터 살펴보는 습관이 생겼습니다.

에디터의 해석노트

이번 글은 가장 빠르게 WordPress를 설치하는 방법을 소개하는 것이 목적이 아닙니다. 셀프 호스팅 환경에서 WordPress를 운영하려면 설치 명령어보다 구조를 이해하는 것이 더 중요하다고 느꼈습니다.

WordPress는 웹 화면만 보면 간단해 보이지만, 실제로는 웹 애플리케이션, 데이터베이스, 파일 저장소, 네트워크, 백업이 함께 움직입니다. Docker Compose는 이 구조를 한눈에 정리해주는 도구에 가깝습니다.

설치는 하루면 끝날 수 있지만 운영은 계속됩니다. 그래서 처음부터 운영 가능한 구조로 설치하는 습관이 필요하다고 생각합니다.

참고 링크 (References)

트러블슈팅

문제: Docker Compose로 WordPress를 실행했지만 브라우저에서 설치 화면이 열리지 않음

WordPress 화면이 열리지 않을 때는 한 번에 결론을 내리기보다 컨테이너 상태, 포트, 로그, DB 연결 정보를 순서대로 확인하는 것이 좋습니다.

확인: 먼저 컨테이너가 실행 중인지 확인합니다.

docker compose ps

그다음 WordPress와 MariaDB 로그를 확인합니다.

docker compose logs wordpress
docker compose logs mariadb

원인: 대표적인 원인은 포트 충돌, 환경변수 오타, DB 이름 불일치, MariaDB 초기화 지연, Volume 권한 문제입니다.

해결: Compose 파일에서 포트와 DB 환경변수를 확인하고, WordPress가 바라보는 DB_HOST가 MariaDB 서비스 이름과 같은지 확인합니다.

  • 화면이 열리지 않음: 포트 설정과 방화벽을 확인합니다.
  • DB 연결 오류: DB_HOST, DB_NAME, DB_USER, DB_PASSWORD를 확인합니다.
  • 컨테이너 재시작 반복: docker compose logs로 오류를 확인합니다.
  • 데이터가 사라짐: Volume 연결 상태를 확인합니다.
  • 설정이 헷갈림: Compose 파일을 운영 문서처럼 정리합니다.

대부분의 설치 오류는 큰 문제가 아니라 Compose 파일의 작은 오타나 연결 정보 불일치에서 시작됩니다. 그래서 설치가 안 될 때는 로그와 설정을 차근차근 비교하는 것이 가장 좋습니다.

핵심 체크포인트 10

  1. Ubuntu 서버에서 Docker가 정상 실행되는가?
  2. Docker Compose 명령을 사용할 수 있는가?
  3. WordPress와 MariaDB 서비스 이름이 명확한가?
  4. DB 이름, 사용자, 비밀번호가 서로 일치하는가?
  5. WordPress 접속 포트가 충돌하지 않는가?
  6. WordPress 파일이 Volume에 저장되는가?
  7. MariaDB 데이터가 Volume에 저장되는가?
  8. 브라우저에서 초기 설치 화면이 열리는가?
  9. 컨테이너 재시작 후에도 서비스가 유지되는가?
  10. 설치 후 백업과 운영 점검을 이어갈 수 있는가?

마무리

Docker를 이용한 WordPress 구축은 처음에는 조금 복잡하게 느껴질 수 있습니다. 하지만 서비스를 컨테이너 단위로 나누어 관리하게 되면 운영과 유지보수가 훨씬 편리해집니다.

이번 글에서는 WordPress와 MariaDB를 Docker Compose로 구성하고, 초기 설치와 운영 전 점검까지 살펴봤습니다. 중요한 것은 설치 화면을 띄우는 것에서 멈추지 않는 것입니다. Volume, DB 연결, 로그, 재시작 테스트까지 확인해야 운영 가능한 구조에 가까워집니다.

WordPress 설치는 끝이 아니라 시작입니다. 안정적인 운영을 위해서는 Docker 구조를 이해하고, 백업과 점검, 장애 대응까지 함께 준비하는 것이 셀프 호스팅의 첫걸음이라고 생각합니다.