正在摸索用docker運行LNMP環境,有個問題不是很清楚,
假設有兩個分站,
aaa.xxxxxxx.com
bbb.xxxxxxx.com
對應有兩個project資料夾,分別是project-a,project-b,
兩個資料夾中分別有自己的docker-compose.yml文件,裡面分別定義了nginx+php+mysql的一些東西。
問題:
在兩個資料夾中分別執行docker-compose up
的時候,nginx+php+mysql是運行了兩份,還是一份呢?
如果運行兩份,那不是很佔空間嗎,當有N個分站的時候,那可咋辦?
一個專案目錄中的
docker-compose.yml
对应一套 Nginx + PHP + MySQL。如果你分别在各自目录中docker-compose up -d
了兩次,那麼這就是兩套。是的,如果你這麼去分多個站,會浪費大量的記憶體空間,特別是 MySQL,因為有大量的重複。
Docker雖然輕量級,但並不代表可以移除重複記憶體佔用,不會幫你壓縮記憶體空間。
你這樣的做法是絕對的隔離,讓各站直接絕無交叉,從安全性來說很好,但是這種隔離就意味著多重副本。你要考慮是否需要這樣的隔離。
或許你需要不以站點視角來看問題,而是以服務視角看問題。你需要的是3個服務,因此一套
docker-compose.yml
運行三個服務,Nginx, PHP, MySQL。然後多站點的需求,像傳統伺服器一樣,去設定 nginx 以及 mysql 資料庫即可。