星期二, 11月 28, 2017

Docker shared folder between host and containers

因為很多 Docker Image 都陽春到沒有方便的交換檔案做法,像是要從 Host 複製檔案進 Docker Container,或反方向,或是 Docker Container 之間互相分享檔案,也許連平常視為基本的 SCP SSH 都沒有。幸好 Docker 有專門設計 Volume 給我們用,方法也不只一種,這邊講個最簡單又通用的:
  • docker volume create <your_volume_name> 建立新的共享目錄
  • docker volume ls 查詢目前有哪些共享目錄
  • docker volume inspect <your_volume_name> | grep Mountpoint 查詢共享目錄在主機上的實體路徑
  • docker volume rm <your_volume_name> 刪除共享目錄
當我們要開一個新的 Container,可以掛上這個共享目錄,如:
  • docker run
    • -d
    • --name <your_container_name>
    • -v <your_volume_name>:/tmp
    • <your_image_name>
就能在 Container 的 /tmp 找到我們放在 Mountpoint 的檔案。

星期六, 11月 18, 2017

Intranet jail break

我們常開發了一些網站應用程式,部署在個人開發環境、內網測試環境與客戶測試環境,因為各有各的用途與限制,三者缺一不可,但又瑣碎費時。
  • 個人開發環境:通常與開發工具結合,不太需要擔心如何部署,但配備要夠(資料庫不一定是隨便一部電腦就跑得動吧?)。
  • 內網測試環境:為了整合測試,或給 SA 驗收確認,可以搭配 Jenkins 持續部署。
  • 客戶測試環境:為了給客戶 Prototyping,請工程師帶個人開發環境(筆電)秀給客戶看?或請客戶提供機器讓我們去裝一套?或請公司的 MIS 把內網開給客戶?
現在有個神器 ngrok 能幫忙,原理應該是與分享檔案的 JustBeamIt 類似,只要是內網測試環境,我們自己就能把內網開給客戶。下載解壓之後,只有一個執行檔,請在內網執行環境的主機上開終端機/命令提示字元,執行類似如下的指令:
  • ./ngrok http 80
就會把本機的 http port 80 公開在 Internet 上,網址是隨時産生的。這時再把網址傳給客戶,我們這些廢宅工程師就免出門吹風了。