我開發了一個nodejs應用程序,它在一端提供https(http/2)接口並與SQL Server數據庫進行通信, SMTP郵件發件人和基於http的郵政編碼查詢服務。實質上它是一個基於Web的單頁面應用程序。我可以告訴Docker在我的文件系統中放置只讀和可讀寫部分的位置
這運行在一個坐在公司局域網上的小樹莓pi/2上,在局域網上的windows計算機上與數據庫交談。其他服務是外部的。應用程序保持私密是很重要的。
這是這個應用程序的早期版本,所以會受到一些改變。其中最複雜的將是如何升級到更新版本的節點而不會停機很長時間。
昨天我遇到了Docker,更具體的一篇關於如何在樹莓派上設置Docker的文章。它讓我很興奮,這可能是快速更新我的應用程序的解決方案。如果我將節點和我的應用程序打包到Docker容器中,我可以預先爲最新版本的節點和我的應用程序構建容器,然後測試它們並非常迅速地安裝它們。
目前,Raspberry Pi文件系統的SD卡被配置爲4個分區。 1)是啓動分區,2)是文件系統的根。這兩個都是隻讀的,3)是pi用戶家的分區,4)是/ var後兩個是可讀寫的。
原因是安裝的軟件除了日誌(進入/ var)之外都是隻讀的。在斷電時防止SD卡損壞。我確實有一個用戶在只讀區域有一個主目錄,並且它的設置使得登錄可以將文件系統rw直到他再次註銷。此用戶是我運行命令來安裝最新的生產版本的位置。一些測試和開發可以在pi用戶中進行,這就是爲什麼該區域是可讀寫的。
我剛剛在運行Debian的桌面(amd64)機器上安裝了Docker。據我所知,所有Docker文件都位於/ var/lib/docker下的某處。這包括組成加載圖像的所有文件。雖然有一個/ etc/docker目錄,但其中的唯一配置似乎是一個關鍵。
所以我的問題是,有沒有一種方法來配置Docker,使得容器映像實際上可以位於當我登錄到帳戶時在讀寫之間切換的區域,並且在我註銷時再次變爲只讀,但是寫入的容器部分(可能沒有 - 見下一段)坐落在/ var。
我的應用程序實際上將日誌寫入標準輸出和標準錯誤。目前他們正在由PM2管理,PM2會在他們退出時重新啓動它們,但也會將日誌寫入一對旋轉的日誌文件。不幸的是,我有應用程序失敗,並且PM2還沒有重啓的情況下
我懷疑Docker也可能被設置爲自動重啓一個失敗的容器,並且我也可以設置它,以便內容stdout和stderr重定向到Docker容器之外的文件中。這可以讓以後更容易查看它們。這可能嗎?事實上,如果可能的話是好的做法,還是我會更好地繼續在Docker容器中使用pm2