這是本文件的舊版!


Dokuwiki docker image 加入 mysql client 相關套件

  • 因為安裝 Statistics Plugin 會將統計資料寫入 MySQL 資料庫, 但 dokuwiki 在 LinuxServer.io 的 image 內並無 mysql client 相關套件, 導致出現 Error: Call to undefined function mysqli_connect()
  • 如果不想自己重新打包 docker image 可以使用 LinuxServer.io 提供的容器初始化腳本方式來處理
  1. 建立 custom-init 目錄

    mkdir -p custom-init

  2. 新增容器初始化腳本
    custom-init/10-install-mysqli.sh
    #!/bin/bash
     
    # 安裝 mysql client 相關套件
    apk add --no-cache mysql-client php-mysqli
     
    # 重啟 PHP-FPM 讓套件生效
    s6-svc -r /run/service/svc-php-fpm
     

    https://raw.githubusercontent.com/tryweb/docker-compose/refs/heads/main/dokuwiki/custom-init/10-install-mysqli.sh

  3. 修改 docker-compose.yml 掛上 custom-init
    docker-compose.yml
    services:
      dokuwiki:
        image: lscr.io/linuxserver/dokuwiki:latest
        container_name: dokuwiki
        environment:
          - PUID=1000
          - PGID=1000
          - TZ=Asia/Taipei
        ports:
          - 80:80
          - 443:443
        restart: always
        volumes:
          - ./dokuwiki_data:/config
          - ./custom-init:/custom-cont-init.d
     
      mariadb:
        image: mariadb
        container_name: db
        ports:
          - 3306:3306
        environment:
          - MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
          - TZ=Asia/Taipei
        restart: always
        volumes:
          - ./db_data:/var/lib/mysql
     
      adminer:
        image: adminer
        container_name: adminer
        restart: always
        ports:
          - 8080:8080
     
      watchtower:
        container_name: watchtower
        image: containrrr/watchtower
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
        environment:
          - TZ=Asia/Taipei
          - WATCHTOWER_SCHEDULE=0 30 23 * * *
          - WATCHTOWER_CLEANUP=true
        labels:
          - "com.centurylinklabs.watchtower.enable=true"
        restart: unless-stopped
     

    https://raw.githubusercontent.com/tryweb/docker-compose/refs/heads/main/dokuwiki/docker-compose.yml

  4. 重新啟動 docker compose

    docker compose down
    docker compose up -d

  • 在 dokuwiki 的 log 應該會看到類似以下的訊息

    :
    dokuwiki    | │ 2023-04-13 │ 2024-05-27 │ /config/nginx/nginx.conf                                               │
    dokuwiki    | │ 2023-12-25 │ 2024-07-16 │ /config/nginx/site-confs/default.conf                                  │
    dokuwiki    | └────────────┴────────────┴────────────────────────────────────────────────────────────────────────┘
    dokuwiki    | [custom-init] Files found, executing
    dokuwiki    | [custom-init] 10-install-mysqli.sh: executing...
    dokuwiki    | fetch http://dl-cdn.alpinelinux.org/alpine/v3.20/main/x86_64/APKINDEX.tar.gz
    dokuwiki    | fetch http://dl-cdn.alpinelinux.org/alpine/v3.20/community/x86_64/APKINDEX.tar.gz
    dokuwiki    | (1/9) Installing mariadb-common (10.11.11-r0)
    dokuwiki    | (2/9) Installing perl (5.38.3-r0)
    dokuwiki    | (3/9) Installing perl-error (0.17029-r2)
    dokuwiki    | (4/9) Installing perl-git (2.45.3-r0)
    dokuwiki    | (5/9) Installing git-perl (2.45.3-r0)
    dokuwiki    | (6/9) Installing libstdc++ (13.2.1_git20240309-r1)
    dokuwiki    | (7/9) Installing mariadb-client (10.11.11-r0)
    dokuwiki    | (8/9) Installing mysql-client (10.11.11-r0)
    dokuwiki    | (9/9) Installing php83-mysqli (8.3.15-r0)
    dokuwiki    | Executing busybox-1.36.1-r29.trigger
    dokuwiki    | OK: 176 MiB in 140 packages
    dokuwiki    | [custom-init] 10-install-mysqli.sh: exited 0
    dokuwiki    | [ls.io-init] done.
    :

  • 在 Statistics Plugin 的統計畫面也可以正確出現統計數字
  • 如果編輯 wiki 頁面儲存出現異常, 錯誤訊息 Field 'dt' doesn't have a default value
  • 針對 stats_edits 與 stats_lastseen 兩個 Table 內的 dt 欄位設定預設值 current_timestamp() 就可以解決
    ALTER TABLE `stats_edits`
    MODIFY COLUMN `dt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP();
     
    ALTER TABLE `stats_lastseen`
    MODIFY COLUMN `dt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP();
  • tech/dokuwiki/statistics.1744560854.txt.gz
  • 上一次變更: 2025/04/14 00:14
  • jonathan