簡體   English   中英

在 Docker 容器中運行我的應用程序

[英]Running my application in a Docker Container

我正在從事我的組織項目之一,其中我們有一個名為 Gateway 的嵌入式設備,通過它我們能夠通過 DLMS 和 Modbus 協議讀取電表。 網關能夠通過這些協議讀取儀表並解釋接收到的數據,並使用 SIM 或以太網通過安全的 websocket 傳輸層協議以同構 JSON 數據結構將其發送到后台。 Gateway Application OS 擁有我們的自定義 linux,應用程序代碼是用 .NET C# 編寫的,並使用 Mono Framework 在 Linux 上運行。 這個應用程序有 6 個二進制文件、4 個 SQLite 數據庫、一些 dll 和一些共享的 C 庫。 這在我的嵌入式設備網關上運行良好。 現在一些客戶不想要嵌入式設備網關,而是想要一個在 Windows PC 上運行的解決方案,它可以通過 TCP 讀取儀表並能夠通過以太網將數據發送到后台並將其保存在適當的數據庫中。 現在為了滿足這個要求,我們有兩種方法:-

  1. 在 Windows 操作系統上開發一個全新的 .NET 應用程序,它具有相同的目的。
  2. 在 Docker 容器中對整個網關應用程序進行 Docker 化,並使用 Docker 桌面在 Windows 操作系統上運行它。

我們正在考慮第二種方法的方向,因為我們只需要為這兩種解決方案維護一個代碼庫。 但是我們的組織在 Docker 方面並不是很專業。

請建議我們的想法是否正確。 我們應該采用第二種方法或第一種方法,我們必須為此開發一個全新的代碼庫。

好吧,很難提出任何建議,因為該應用程序並非微不足道。

但是,我可以說的是,為 Windows 開發新應用程序和維護兩個版本的成本相當高。

另一方面,嘗試運行現有應用程序的 dockerized 版本應該非常低(至少比第一個路徑低得多),畢竟您應該創建一個包含所有必需自定義的 Dockerfile 並構建映像。 從那時起,您只需從該圖像中運行該過程即可。

因此,恕我直言,您應該先嘗試該選項,然后很快得出結論,它是否是您的案例中的可行解決方案。 在最壞的情況下,您最終會得到第一個解決方案,但開銷非常低。

您應該知道的一件事是,如果您有一個 dockerized 進程,並且按照您所說的運行 6 個進程,那么通常 Docker 效果最好。 您可能需要像supervisor.d這樣的東西來運行它們: https : //docs.docker.com/config/containers/multi-service_container/

要回答一個問題,我想知道他們為什么要這樣做。 網關通常是使用一個物理協議層連接到儀表的現場安裝設備,然后使用回程將儀表數據傳遞到 scada 或前端系統,通常是基於 ip 的。 (更復雜的網關可能會提供一定程度的儀表虛擬化,我認為這里可能就是這種情況)。 如果儀表已經可以在 tcp 上運行,那么通常不需要網關。 因此,您的客戶似乎希望將網關代碼用作窮人的 scada 系統或前端系統。 如果您可以解釋端到端解決方案的架構,則可能有助於了解嘗試虛擬化網關設備的必要性,這很可能是確定最佳方法的關鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM