本專案前身為 docker-phpmyadmin-autoconfig 的改良版,由於我建議了官方 phpMyAdmin 能夠添加 conf.d 的方式來進行額外設定,所以才有了這個專案。
這個專案是以 node + dockerode 來實作,目的是為了讓本地端的 phpMyAdmin 能更方便使用,主要的功能如下 :
- 透過添加環境變數於 container 中達成自動生成設定檔至 phpMyAdmin 的
/etc/phpMyAdmin/conf.d
- 不同於前身的專案是將 phpMyAdmin 包在一起,若我沒更新則版本一直是舊的,而此專案的運作方式是獨立的,因此可以搭配未來任何新版本的 phpMyAdmin。
請注意
本專案僅是為了開發者方便使用,不建議部屬至 Production 環境。
我們使用 samples/ 來講解設定的步驟。
在 samples 目錄中有以下三個子目錄分別作用是
- phpmyadmin : 這裡頭包含了啟動
phpMyAdmin
及pma-confd
的 compose 設定。 - app1 及 app2 : 用以模擬兩個 app 並且都使用到 MariaDB 的設定。
在這個範例中,我們希望能用一套 phpMyAdmin 來管理 app1 及 app2 中的 MariaDB,先來看看 phpmyadmin 中的 docker-compose.yml
做了甚麼。
- 我們可以看到 volumes 的設定,這是為了讓
phpmyadmin
與pma-confd
能夠共享同一個conf.d
,當pma-confd
發現到有 MariaDB 正在運作時,則會自動生成設定檔於其中。 - 在
pma-confd
中必須將本地端的 docker socket path 綁定,以使其能監聽Docker 的事件,藉由事件能得知是否有 MariaDB 正在運作。
接著來看看 app1 及 app2 的設定
- 在 lables 中必須要有一行
pma.allow_config=true
,這是必須的,這是為了允許pma-confd
對其做出對應的設定。 - 在 labels 中有以
pma.cfg
開頭的設定,這會讓pma-confd
知道要產生甚麼設定值,例如pma.cfg.verbose
則是會生成$cfg['Servers'][$i]['verbose']
。
經過以上設定之後,就只需要一個 phpMyAdmin container 就可以操控 app1 及 app2 的 MariaDB。
如果要運作這個範例,分別於各目錄執行 docker compose up -d
就可以了。
接著只要打開 http://localhost:8080 就能發現有兩套 MariaDB 於登入畫面可以選擇。