Docker基礎(chǔ)——Docker Compose

????Docker Compose是一個幫助您定義和共享多容器應用程序的工具。Docker Compose通過讀取項目根目錄下的compose.yaml文件執(zhí)行yaml里預制的命令構(gòu)建整個基于Docker的項目。
????上述代碼是一份compose.yaml文件的主要內(nèi)容,首先以services開頭定義服務:
app是第一個服務的名稱,同時這個名字會作為該服務的網(wǎng)絡(luò)別名使用。
image指定了app服務的基礎(chǔ)鏡像
command指定了容器準備完畢后執(zhí)行的指令
ports指定了主機和服務之間的端口映射數(shù)組
working_dir定義工作目錄,在Docker compose中可以根據(jù)當前文件目錄會用相對路徑
volumes定義了一個數(shù)組,數(shù)組的每一項是一個卷掛載配置
environment標明了所有的環(huán)境變量
mysql是第二個服務的名稱,app的環(huán)境變量
MYSQL_HOST通過將值指定為mysql與該服務鏈接
當運行docker運行容器時,docker會自動創(chuàng)建命名卷。但是,在使用Compose運行時不會發(fā)生這種情況。我們需要在與services平級的頂級volumes中定義卷,然后在服務的volumes配置中指定掛載點。最簡單的方式是只需提供卷名稱,就可以使用默認選項。
????下面我們可以基于以上的配置文件啟動應用,在啟動應用之前要確保沒有同樣的容器正在運行,Docker compose不會自動去替換現(xiàn)有容器。
????我們可以使用上述代碼在compose.yaml所在的目錄運行應用,-d標記和之前使用的 -d 含義相同都是后臺運行。
????在運行過程中我們會注意到Docker compose執(zhí)行的第一個任務是為這次創(chuàng)建的應用棧創(chuàng)建網(wǎng)絡(luò),所以我們在之前的compose.yml中不需要主動配置網(wǎng)絡(luò),單次創(chuàng)建的應用棧中的服務默認通過此網(wǎng)絡(luò)互通。