昨天嘗試過了一個 Docker-Compose 的 Demo ,各位應該都不知道發生了什麼事吧。
首先讓我們回顧一下昨天發生了什麼,好像就是生了一個 docker-compose.yml
然後下個指令就OK了。
那麼接著就是要來看昨天的 docker-compose.yml
幹了什麼事啦。
首先昨天的第一部分 version: '3.8'
是什麼意思呢?這個意思是這個文件的版本,主要是告訴 Docker 引擎該用哪個。不過也不用了解得太詳細,因為這個標籤官方說已經棄用了。詳細的部分請參考一下連結:https://docs.docker.com/compose/compose-file/#compose-file
接著先跳到第三部分 networks
,這部分就是跟前天的內容,不過是用 Docker-Compose 重現出來。用 Docker-Compose 的方式可以同時啟動多個服務,並且指定它們連結到某個 Network ,用這個方式就可以偷懶,不用一個一個指定連接到某個 Network 了。 net
是在 Docker-Compose 中使用的名稱; name
是這個 Network 實際的名稱; driver
是 Network 的類型。
接著是第二部分 services
的區塊,看名稱應該很容易理解吧,就是想要開啟的服務。
內部又分兩個小區塊 backend
跟 cache
, backend
的部分主要有 7 個小項,build
就是指定 Dockerfile
的路徑; container_name
就是 run 起來之後 Container 的名稱; network
就是要連接的 Network ; ports
是要開啟的 port ,前面是 host 後面是 container ;environment
是設定環境變數,需要注意的是,這邊如果有環境變數是有連結是連到其他 Container 的,需要將名稱設定為 Docker-Compose 中的服務名稱,在這邊就是 redis://cache:6379/0
中的 cache
; volumes
還是跟前面 Day 07 的 Valume 一樣;最後的 command
就是 Container 啟動時的指令,需要注意的是 Docker-Compose 會覆蓋掉 Dockerfile 中的 COMMAND 。cache
的部分中只有一個需要特別說明,那就是 image
,主要是直接使用已經打包好的 Image 。
docker-compose.yml
的部分大概就到這邊,接著就是可以一起把它們啟動起來的指令啦。
$ docker-compose up # run and build
直接 up
一下就可以啟動拉,就算有 Dockerfile 也不用先 build , up
的過程中會自動 build 。
如果需要停止並刪除 Container 可以用下面這個指令。
$ docker-compose down
那麼就先到這邊, Docker-Compose 再需要同時啟動多個 Container 時,真的很好用阿。
大家掰~掰~