본문으로 건너뛰기
← 가이드 목록

워드프레스 블로그·홈페이지 만들기 (Docker)

워드프레스(WordPress)는 코딩 없이 블로그나 홈페이지를 만들 수 있는 프로그램입니다. Docker Compose로 워드프레스와 DB를 한 번에 띄우고, 도메인과 HTTPS까지 연결하는 방법입니다.

준비물

1. 설정 파일 만들기

mkdir ~/wordpress && cd ~/wordpress
nano compose.yaml

아래 내용을 붙여 넣고, 비밀번호 두 개를 각각 길고 복잡한 값으로 바꿉니다. (DB비밀번호는 두 곳에 같은 값)

services:
  db:
    image: mariadb:11
    restart: unless-stopped
    environment:
      MARIADB_DATABASE: wordpress
      MARIADB_USER: wordpress
      MARIADB_PASSWORD: DB비밀번호
      MARIADB_ROOT_PASSWORD: 루트비밀번호
    volumes:
      - db:/var/lib/mysql

  wordpress:
    image: wordpress:latest
    restart: unless-stopped
    depends_on:
      - db
    ports:
      - "127.0.0.1:8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: DB비밀번호
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wp:/var/www/html

volumes:
  db:
  wp:

DB는 포트를 아예 열지 않았고, 워드프레스는 127.0.0.1에만 연결했습니다. 외부에서는 아래의 Nginx를 통해서만 접속됩니다.

docker compose up -d

2. Nginx로 도메인 연결

Nginx가 없다면 설치합니다. (sudo apt install -y nginx)

sudo nano /etc/nginx/sites-available/example.com

example.com을 내 도메인으로 바꿔 넣습니다.

server {
    listen 80;
    server_name example.com www.example.com;
    client_max_body_size 64M;

    location / {
        proxy_pass http://127.0.0.1:8080;
        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_set_header X-Forwarded-Proto $scheme;
    }
}
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

3. HTTPS 적용

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com

방화벽(ufw)을 쓴다면 80·443을 열어둡니다. (방화벽 포트 열기)

4. 워드프레스 설치 화면

브라우저에서 https://내도메인으로 접속하면 언어 선택 화면이 나옵니다. 한국어를 고르고 사이트 제목, 관리자 아이디·비밀번호를 정하면 끝입니다. 관리 화면은 https://내도메인/wp-admin입니다.

설치 화면은 가장 먼저 접속한 사람이 진행할 수 있습니다. 3단계까지 끝냈다면 바로 설치를 마쳐주세요.

관리 팁

  • 업데이트: 워드프레스 본체·테마·플러그인은 관리 화면에서 업데이트합니다. 오래된 플러그인은 해킹의 가장 흔한 원인이니 쓰지 않는 플러그인은 지우세요.
  • 백업: 글과 설정은 DB에, 업로드한 이미지와 테마는 wp 볼륨에 있습니다. 백업 플러그인을 쓰거나, 아래처럼 DB를 내보내 둡니다.
cd ~/wordpress
docker compose exec db mariadb-dump -u root -p wordpress > wp-db-$(date +%F).sql

(루트 비밀번호를 물어봅니다) 내려받는 방법은 서버 데이터 백업하기를 참고하세요.

잘 안 될 때

  • 502 Bad Gateway — docker compose ps로 컨테이너가 실행 중인지 확인하세요.
  • "Error establishing a database connection" — compose.yaml의 두 DB비밀번호가 같은지 확인하세요. 처음 실행한 뒤 비밀번호를 바꿨다면 DB에는 예전 값이 남아 있습니다.
  • HTTPS 적용 후 화면이 깨지거나 접속이 반복돼요 — Nginx 설정에 X-Forwarded-Proto 줄이 있는지 확인하세요.

해결되지 않는 문제가 있다면 고객센터로 문의해주세요.