雖然標題是官方文件筆記
但你各位應該知道一件事情 : 建環境比寫程式本身還要讓人頭痛。
所以第一篇先告訴各位我如何建立一個跟OS的耦合度低(有沒有更好的說法)的MySQL環境吧。
首先,建環境大抵有三種思維 :
1. 直接裝在作業系統中 : 這種方式的安裝手續最簡單,直接跟裝遊戲一樣下載官方的安裝包就好了。
但缺點是當你想要安裝不同版本的軟體時要看軟體本身支援兼容與否。不僅如此,後續後人接手這個環境的時候會比較難維護這個環境。
2. 安裝在VM ( Virtual Machine )中 : 簡單來說就是裝一個獨立的系統,然後再直接安裝軟體在VM上。
但VM本身不僅吃資源也很慢 ( 因為它是從作業系統上就完全獨立,包括繪圖等等的基本功能都要重頭跑當然快不起來 )。
好處是裡面的環境設定是真正地與原本的作業系統分離,關掉VM等於關掉服務。
但如果你用VirtualBox可能會發生壞檔問題( 沒辦法開VM ),所以我十分不建議。
3. Container技術 : 現在很熱門的技術,中文是容器,docker是其中最熱門的實做(種類)之一。
可以想像成它是基於原先作業系統的部分功能之上,再額外疊加環境相關指令。
所以環境也是隔離的,且速度也比較貼近第一種方式。
缺點是因為是供開發用所以沒有實做一些使用者的功能(EX:GUI)
還有你如果要裝跨作業系統的軟體就必須額外安裝一個作業系統讓Container使用。
但幸好微軟去年有提供WSL來作為Container的基底
所以現在在Windows上也可以無痛享受linux base的Container。
由於手邊只有windows 10的桌電。這邊選用基於WSL2的linux container。
教學的話我覺得這位仁兄拍得不錯,可以參照他的影片先裝好docker tool再進行作業。
在確定有docker的情況下,就可以開始撰寫程式了。
為什麼要寫程式?
因為我享用程式保留我的安裝流程,這樣的思維有一個名詞叫做"Infrastructure as code"
因為我享用程式保留我的安裝流程,這樣的思維有一個名詞叫做"Infrastructure as code"
這樣你以後可以使用這些程式到其他有docker的地方建出一樣的環境。很吸引人吧?
docker原本就提供這樣的功能,叫做docker-composer。
步驟很簡單,新增一個資料夾後在裡面新增一個叫做docker-compose.yml的檔案。
然後貼上以下內容
# 版本號,此處不重要
version: "3.9"
# 你可以解釋為設定一"組"服務
services:
# 一個服務的名稱
mysql:
# 在這邊先簡單理解為別人做好的mysql環境檔案,我們拿下來用。
image: mysql:5.7
# 這邊是將mysql存的資料放在同目錄的data資料夾中,這樣以後可以將資料帶著走。
volumes:
- "/data:/var/lib/mysql"
environment:
# 這個image提供的參數,目的是讓我們登入的時候不用打密碼
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
接著輸入以下指令
docker-compose up -d |
你可以在同一個目錄呼叫docker-compose指令操作這些容器。
( 因為用別人的設定,所以第一次新建mysql時會需要下載image,這時候要等久一點。 )
環境建好了,那要如何進入container中呢?
最普遍的做法是先進到container中
docker-compose exec mysql bash |
mysql |
但這個image簡化了流程,你可以直接從外部這樣登入mysql。
docker-compose exec mysql mysql |
進去container後可以按下ctrl+D跳出container。