使用 Docker Compose 快速安裝 MantisBT

MantisBT 全名是 Mantis Bug Tracker,是一個開源的專案 Bug 追蹤軟體,方便用於讓使用者向開發團隊回報問題,使用 PHP 開發,需要搭配資料庫如 MySQL, MariaDB 等。

本文使用的是 Github 上的 okainov/mantisbt-docker,是網友已經包好的 Docker image,然後再透過筆者撰寫 docker-compose.yml 和 .env(設定檔),完成 MantisBT + 資料庫的部屬。

在使用前請先在 Linux 中執行下面這行指令,用途是產生一個隨機的亂數,MantisBT 在加密時會加入此內容,用來增加安全性。具體資訊可以查看官方說明
    
cat /dev/urandom | head -c 64 | base64
    

範例輸出:
    
Rs2tLgKQPkI5ZdZas6CjwIOxEAdODYfyLFr7mgcDWMMikJicOiXYUXLtRUjC1aA+Z2oUkFdduXicImhd7H6CEw==
    

要建立兩個檔案,第一個檔名為 .env ,在第一行的部分加入剛剛產生出來的內容。後面的則是資料庫會使用的帳號密碼和資料庫名稱,可以自行更改。
    
MASTER_SALT='Rs2tLgKQPkI5ZdZas6CjwIOxEAdODYfyLFr7mgcDWMMikJicOiXYUXLtRUjC1aA+Z2oUkFdduXicImhd7H6CEw=='

MARIADB_ROOT_PASSWORD='MantisBt8'
MARIADB_USER='mantisbt123'
MARIADB_PASSWORD='mantisbt123'
MARIADB_DATABASE='mantisbt'
    

註: 這裡並未設定 email 相關資訊,之後會連入 docker 一並設定

建立 docker-compose.yml 檔案,可自行替換 mantisBT 的 port(8989) 和 資料庫資訊,這裡使用的是 mariadb
    
version: "3.8"

services:
  web:
    image: okainov/mantisbt:latest
    container_name: mantisbt_web
    ports:
      - "8989:80"
    environment:
      - MANTIS_ENABLE_ADMIN=1
      - MASTER_SALT=${MASTER_SALT}
      - MYSQL_HOST=db
      - MYSQL_DATABASE=${MARIADB_DATABASE}
      - MYSQL_USER=${MARIADB_USER}
      - MYSQL_PASSWORD=${MARIADB_PASSWORD}
    depends_on:
      - db
    restart: always


  db:
    image: mariadb:10.7.8
    container_name: mantisbt_db
    volumes:
        - ./db/mantisbt_db:/var/lib/mysql
    environment:
        - MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
        - MARIADB_USER=${MARIADB_USER}
        - MARIADB_PASSWORD=${MARIADB_PASSWORD}
        - MARIADB_DATABASE=${MARIADB_DATABASE}
    

啟動: (在這兩個檔案的路徑上直接執行)
    
docker compose up -d
    

開啟安裝頁面:
    
http://localhost:8989/admin/install.php
    

輸入資料庫連接資訊,依照 .env 的內容輸入,預設的內容如下:
Username: mantisbt123
Password: mantisbt123
Database: mantisbt
Admin Username: root
Admin Password: MantisBt8
然後改一下預設時區後點選「Install/Upgrade Database」

安裝完畢後使用下面的網址開啟登入頁面:
    
http://localhost:8989/login_page.php
    

預設帳號密碼為: administrator / root

修改 email 資訊

連入 docker 容器:
    
docker exec -it mantisbt_web bash
    

安裝 vi 編輯器,或是其他自己慣用的編輯器:
    
apt-get update && apt-get install -y vim
    

編輯設定檔
    
vi /var/www/html/config/config_inc.php
    

預設內容如下:
    
<?php

$g_db_type           = 'mysqli';

$g_hostname          = getenv('MYSQL_HOST') !== false ? getenv('MYSQL_HOST') : 'db';
$g_database_name     = getenv('MYSQL_DATABASE') !== false ? getenv('MYSQL_DATABASE') : 'bugtracker';
$g_db_username       = getenv('MYSQL_USER') !== false ? getenv('MYSQL_USER') : 'mantis';
$g_db_password       = getenv('MYSQL_PASSWORD') !== false ? getenv('MYSQL_PASSWORD') : 'mantis';


$g_crypto_master_salt       = getenv('MASTER_SALT');


# Configure email
$g_webmaster_email          = getenv('EMAIL_WEBMASTER') !== false ? getenv('EMAIL_WEBMASTER') : null;
$g_from_email          = getenv('EMAIL_FROM') !== false ? getenv('EMAIL_FROM') : null;
$g_return_path_email          = getenv('EMAIL_RETURN_PATH') !== false ? getenv('EMAIL_RETURN_PATH') : null;

include 'config_inc_addon.php';
    

上面 15 到 17 行的內容可以刪除,替換為自己的 email,這裡提供筆者的範例:
    
<?php

$g_db_type           = 'mysqli';

$g_hostname          = getenv('MYSQL_HOST') !== false ? getenv('MYSQL_HOST') : 'db';
$g_database_name     = getenv('MYSQL_DATABASE') !== false ? getenv('MYSQL_DATABASE') : 'bugtracker';
$g_db_username       = getenv('MYSQL_USER') !== false ? getenv('MYSQL_USER') : 'mantis';
$g_db_password       = getenv('MYSQL_PASSWORD') !== false ? getenv('MYSQL_PASSWORD') : 'mantis';


$g_crypto_master_salt       = getenv('MASTER_SALT');


# Configure email
# 網站管理員的電子郵件地址
$g_webmaster_email='service@ruyut.com.tw';
# 管理員 email (舊版設定,已過時,現為 g_webmaster_email)
# $g_administrator_email ='service@ruyut.com.tw';
# 接收退回郵件的電子郵件地址
$g_return_path_email ='service@ruyut.com.tw';
# 發送的所有電子郵件來源的電子郵件地址
$g_from_email ='service@ruyut.com.tw';
# 啟用通知
$g_enable_email_notification= ON;

$g_smtp_host = 'ms.ruyut.com.tw';
$g_smtp_port = 25;
$g_smtp_connection_mode = 'ssl';
$g_smtp_username ='service';
$g_smtp_password ='service_password';

include 'config_inc_addon.php';
    

設定完畢後不需要重新啟動即可使用。
註:官方建立將 /var/www/html/admin 資料夾刪除或是移動到其他地方,筆者是移動到 home 目錄下,這樣未來有需要變更時再移動回去即可。
註:Email 的設定值 「ON」不可加單引號,筆者就是不小心把他加上單引號,所以一直沒有辦法寄送 Email,連「管理」> 管理設置 > 電子郵件通知 按鈕都沒有出現

參考資料:
MantisBT 2.0 Admin Guide
Github - okainov/mantisbt-docker

留言