前言
這篇文章記錄如何用 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 非常適合輕量部署。不需要維護額外的資料庫服務,一個容器搞定!
發佈留言