Docker + SQLite 架設 WordPress 教學

作者:

分類:

前言

這篇文章記錄如何用 Docker 建立一個使用 SQLite 的 WordPress,不需要 MySQL,輕量又方便。

為什麼用 SQLite?

  • 不需要額外跑 MySQL 容器,省資源
  • 資料直接存在檔案裡,備份方便
  • 適合個人部落格、小型網站

建立專案目錄

mkdir -p ~/wordpress
cd ~/wordpress

建立 Dockerfile

建立 Dockerfile

FROM wordpress:latest

# 安裝必要工具和 SQLite 擴展
RUN apt-get update && apt-get install -y \
    curl \
    unzip \
    sqlite3 \
    libsqlite3-dev \
    && docker-php-ext-install pdo_sqlite \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# 下載 WordPress SQLite 插件
RUN curl -L https://github.com/WordPress/sqlite-database-integration/archive/refs/heads/main.zip -o /tmp/sqlite-plugin.zip \
    && unzip /tmp/sqlite-plugin.zip -d /tmp \
    && mkdir -p /usr/src/wordpress/wp-content/plugins \
    && mv /tmp/sqlite-database-integration-main /usr/src/wordpress/wp-content/plugins/sqlite-database-integration \
    && rm /tmp/sqlite-plugin.zip

# 複製 db.php 到正確位置
RUN cp /usr/src/wordpress/wp-content/plugins/sqlite-database-integration/db.copy /usr/src/wordpress/wp-content/db.php

# 建立 SQLite 資料庫目錄
RUN mkdir -p /usr/src/wordpress/wp-content/database \
    && chown -R www-data:www-data /usr/src/wordpress/wp-content

# 自訂 entrypoint
COPY entrypoint.sh /usr/local/bin/custom-entrypoint.sh
RUN chmod +x /usr/local/bin/custom-entrypoint.sh

ENTRYPOINT ["/usr/local/bin/custom-entrypoint.sh"]
CMD ["apache2-foreground"]

建立 entrypoint.sh

建立 entrypoint.sh

#!/bin/bash
set -e

# 確保 SQLite 插件和 db.php 存在
if [ ! -f /var/www/html/wp-content/db.php ]; then
    echo "Setting up SQLite integration..."
    mkdir -p /var/www/html/wp-content/plugins
    mkdir -p /var/www/html/wp-content/database
    
    # 複製插件到 plugins 目錄
    if [ -d /usr/src/wordpress/wp-content/plugins/sqlite-database-integration ]; then
        cp -r /usr/src/wordpress/wp-content/plugins/sqlite-database-integration /var/www/html/wp-content/plugins/
    fi
    
    # 複製 db.php
    if [ -f /usr/src/wordpress/wp-content/db.php ]; then
        cp /usr/src/wordpress/wp-content/db.php /var/www/html/wp-content/db.php
    fi
    
    chown -R www-data:www-data /var/www/html/wp-content
fi

# 跑原本的 WordPress entrypoint
exec docker-entrypoint.sh "$@"

建立 docker-compose.yml

services:
  wordpress:
    build: .
    ports:
      - "8080:80"
    volumes:
      - wordpress_data:/var/www/html
    environment:
      WORDPRESS_DB_HOST: localhost
      WORDPRESS_DB_USER: dummy
      WORDPRESS_DB_PASSWORD: dummy
      WORDPRESS_DB_NAME: dummy
    restart: unless-stopped

volumes:
  wordpress_data:

啟動 WordPress

docker compose build
docker compose up -d

完成後開啟 http://localhost:8080 就能看到 WordPress 安裝畫面了!

常用指令

# 查看狀態
docker compose ps

# 查看 log
docker compose logs -f

# 停止
docker compose down

# 停止並刪除資料
docker compose down -v

備份

SQLite 資料庫存在 Docker volume 裡,備份整個 volume 即可:

docker run --rm -v wordpress_wordpress_data:/data -v $(pwd):/backup alpine tar czf /backup/wordpress-backup.tar.gz /data

結語

用 Docker + SQLite 跑 WordPress 非常適合輕量部署。不需要維護額外的資料庫服務,一個容器搞定!


留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *