在Mac使用Docker Compose安裝WordPress

Docker環境佈建好後,新增目錄 wordpress

在目錄中建立檔案 docker-compose.yml

version: '3.1'

services:

  wordpress:
    image: arm64v8/wordpress:6.0.1-php7.4-apache
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - wordpress:/var/www/html

  db:
    image: arm64v8/mariadb:10.5
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db:/var/lib/mysql

  redis:
    image: redis:latest
    restart: always
    ports:
      - 6379:6379
    # 如需要資料持久化,可啟用下列設定
    # volumes:
    #   - redis-data:/data

volumes:
  wordpress:
  db:
  # redis-data:

使用終端機模式在目錄中執行

docker-compose up -d

執行完成後,就能順利看到安裝畫面

然後加碼來啟用Redis,可以用桌面版的Docker進入終端機模式

apt-get install -y libz-dev libzip-dev
pecl install redis
docker-php-ext-enable redis

到WordPress外掛安裝並啟用 Redis Object Cache

啟用後再到終端機 (看習慣用哪個編輯器自己選用)

apt-get install -y vim nano

到 wp-config.php加入

define('WP_REDIS_HOST', 'redis');  // 這裡的 'redis' 指向 docker-compose 服務名稱
define('WP_REDIS_PORT', 6379);

順利的話,就能在 wp-admin/options-general.php?page=redis-cache#diagnostics 看到使用 PhpRedis 連線的資訊

Status: Connected
Client: PhpRedis (v6.1.0)
Drop-in: Valid
Disabled: No
Ping: 1
Errors: []
PhpRedis: 6.1.0
Relay: Not loaded
Predis: 2.1.2
Credis: Not loaded
PHP Version: 7.4.30
Plugin Version: 2.5.4
Redis Version: 7.4.2
Multisite: No
Metrics: Enabled
Metrics recorded: 231
Filesystem: Writable
Global Prefix: "wp_"
Blog Prefix: "wp_"
Timeout: 1
Read Timeout: 1
Retry Interval: 
WP_REDIS_HOST: "redis"
WP_REDIS_PORT: 6379
WP_REDIS_PLUGIN_PATH: "/var/www/html/wp-content/plugins/redis-cache"
Global Groups: [
    "blog-details",
    "blog-id-cache",
    "blog-lookup",
    "global-posts",
    "networks",
    "rss",
    "sites",
    "site-details",
    "site-lookup",
    "site-options",
    "site-transient",
    "users",
    "useremail",
    "userlogins",
    "usermeta",
    "user_meta",
    "userslugs",
    "redis-cache",
    "blog_meta"
]
Ignored Groups: [
    "counts",
    "plugins",
    "themes"
]
Unflushable Groups: []
Groups Types: {
    "blog-details": "global",
    "blog-id-cache": "global",
    "blog-lookup": "global",
    "global-posts": "global",
    "networks": "global",
    "rss": "global",
    "sites": "global",
    "site-details": "global",
    "site-lookup": "global",
    "site-options": "global",
    "site-transient": "global",
    "users": "global",
    "useremail": "global",
    "userlogins": "global",
    "usermeta": "global",
    "user_meta": "global",
    "userslugs": "global",
    "redis-cache": "global",
    "blog_meta": "global",
    "counts": "ignored",
    "plugins": "ignored",
    "themes": "ignored"
}
Drop-ins: [
    "advanced-cache.php v by ",
    "Redis Object Cache Drop-In v2.5.4 by Till Krüss"
]

瀏覽次數:33