最近在使用 docker-compose 加入 mongodb 時遇到一個地雷。由於近日來的挫折感,不免還是問一下專家,專家馬上說道:「對呀!應該要一樣的!」接著馬上解釋原因。是這樣啦~我真的有看過官方文件以及手上的書,也許我沒看得很仔細所以忽略掉吧!
當初在debug時很認真搜尋網路,發現沒找到相關問題,有提到的只有一個網頁,我想這問題應該在本機開發或者只做demo都不會遇到,不過進到產品階段肯定會碰到。
通常我們在本機開發都會用的yml設定如下:
1 | version: '3' |
啟動後就能很開心的用GUI或cmd連進mongo進行開發。
問題發生在..
開發階段時,我們將mongo綁定了url(當然在hostfile也加了),如下
1 | version: '3' |
當很開心的啟動後,就發現用任何方式都無法連線到mongo囉!即使docker-compose ps 也可以看到他在listen的狀態,那麼問題是出在哪?
answer
關鍵就是出在 yml 的 service 名稱,這個命名需要和你設定entrypoint 所bind的內容一樣,所以我們來調整一下..
1 | version: '3' |
然後就可以連線了….
皆大歡喜~