選單
GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
4 分鐘閱讀時間 (888 個字)

簡單玩樹莓派-(2) Joomla for docker on RPI

Joomla Docker RPI Joomla Docker RPI
這是麥特王,來自叡揚資訊 GSS,勒是叡揚。
最近手邊有一些 Joomla 專案需要開發,和同事協同開發時,使用 macOS 的同事使用 MAMP,使用 Unix VM 的同事使用 AMP,使用 Windows 的同事,應該是用 XAMPP, AMP, WAMP...? 在各種不同作業系統上,所使用的開發環境不盡相同,偶爾會發生一些錯誤或設定不同導致非預期的錯誤,像是在網站資料備份、還原,或是同步開發,合併的時候,需要花費額外的時間來處理,增加開發負擔。 

進入教學

這次分享的內容是使用 docker 來建置服務與環境,減少上述問題的發生,讓協同開發變得順利。首先準備好 docker 環境,在開發 Joomla 時會需要 PHP, MySQL/Mariadb, Apache/Nginx (常見配置),以下內容會用官方映像檔 JoomlaMariadb  作範例,說明如何建置 Joomla 服務。

# 建立 docker-compose.yml
cd ~
mkdir cms
touch cms/docker-compose.yml
# 修改 docker-compose.yml 的內容
vi docker-compose.yml 
version: '3'

services:
  joomla:
    image: joomla
    container_name: web
    restart: always
	ports:
	  # 掛載本機連接埠至容器連接埠
	  - 8080:80
	environment:
	  # Joomla default db connection settings
	  # mariadb 指的是 mariadb 容器名稱
	  JOOMLA_DB_HOST: mariadb
	  # 使用以下環境變數設定 Joomla 資料庫連線
	  JOOMLA_DB_USER: web_admin
	  JOOMLA_DB_PASSWORD: web_admin_pwd
	  JOOMLA_DB_NAME: web

  mariadb:
	image: mariadb
	container_name: mariadb
	restart: always
	environment:
	  # 使用以下環境變數設定初始化資料庫
      MARIADB_ROOT_PASSWORD: root_pwd
      MARIADB_USER: web_admin
      MARIADB_PASSWORD: web_admin_pwd
      MARIADB_DATABASE: web 
# 接著執行以下指令啟動服務(容器)
cd cms
docker-compose up -d
docker logs -f 

接著畫面會顯示以下資訊,表示資料庫已成功建立,Joomla 啟動正常,可以發現以下重點: 

1. [mariadb]Creating database web
  - 對應到 yml 檔中 services:mariadb:environment:MARIADB_DATABASE 所設定的 web 資料庫。
2. [mariadb]Creating user web_admin
  - 對應到 yml 檔中 services:mariadb:environment:MARIADB_USER 所設定的 web_admin 使用者。
3. [mariadb]Giving user web_admin access to schema web
  - 讓 web_admin 使用者可以存取 web 資料庫。
4. [web]Complete! Joomla has been successfully copied to /var/www/html
  - Joomla 安裝資料已建置在 /var/www/html 網站目錄下。
5. [web]MySQL Database Created
  - 確認資料庫已存在,對應到 yml 檔中 services:joomla:environment 所設定的資料庫連線設定。

最後開始安裝 Joomla 網站,在瀏覽器的網址列輸入 localhost:8080,如下。

以上為完整的 Joomla 網站建置流程,網站和資料庫在每次停用、刪除,啟用容器,資料都會被重置。

開發網站

在開發網站的時候會需要更新檔案與程式碼,可以使用以下兩種方式把資料保存下來。

joomla:
  image: joomla
  container_name: web
  ...
  volumes:
    # 本機路徑掛載至容器內路徑
    - ~/cms/web:/var/www/html
	# 使用持久化資料卷掛載至容器內路徑
	- web-data:/var/www/html
	
mariadb:
  image: mariadb
  container_name: mariadb
  ...
  volumes:
    # 本機路徑掛載至容器內路徑
    - ~/cms/db:/var/lib/mysql
	# 使用持久化資料卷掛載至容器內路徑
	- db-data:/var/lib/mysql
	
volumes:
  # 建立持久化資料卷
  - web-data:
  - db-data: 

之後只需要啟動、關閉容器,就能夠即時開發,預覽網站了。

docker-compose up -d
docker-compose down 

 心得與結語

使用 docker 來統一各個開發者的開發環境,來減少環境差異,亦能保持環境單一與隔離性。若是在客戶端發生問題,透過 docker 能夠快速建立相似的使用環境,來釐清與排除問題。這些特點對比於開頭提到的不同開發環境來說,在啟動環境所花費的時間、服務使用的資源量、環境的掌控度等等都有著顯著的優勢。當然每個工具都有它的長處與適用的時機,在使用時需評估何種工具較為合適,以及發揮其功用,才能把事情做好。這篇文章主要大略說明如何使用 docker 來建置 Joomla 網站,之後有時間的話再來分享更細節、觀念與設定。 

各種平台上的「定期排程」或「開機後自動執行」
讓語言學習模型玩歌曲填詞

相關文章

 

評論

尚無評論
已經注冊了? 這裡登入
Guest
2024/04/29, 週一

Captcha 圖像