[英]How to access non containerised DB on remote IP from a docker container?
[英]Docker dind access to DB container
我有一些問題。 我的任務是實施 web 系統,該系統將能夠編譯 java maven 項目,在引擎蓋下進行測試並生成報告是否所有這些東西都已成功完成。
所以我需要一個隔離的容器來在我的服務中運行 JUnit 測試,以防止從測試解決方案非法訪問我的服務主機。 旨在確保一切安全。 那么我該怎么辦:我有 docker-compose 帶有數據庫服務的“集群”和 web 服務。 當我的 web 服務被請求時(解決方案項目像 maven 項目文件夾的 zip 實現一樣傳遞)我創建一個新的 dind 容器,其中包含一些連接到該數據庫服務的實用程序,下載 zip 存檔和解決方案,解壓縮並執行mvn clean compile
, mvn test
等沒關系。 它還向該數據庫提供了一些關於編譯是否成功以及測試的信息。 當我在localhost:5432
(pg) 上使用 DB 對此進行測試時,它通過-.netwok=host
標志工作。 甚至 DIND 容器也可以訪問數據庫。 但是當我在 docker-compose 中運行所有內容並且數據庫也是 docker-compose 服務時,DIND 容器看不到數據庫主機。 是否可以從 DIND 容器訪問數據庫服務? 可能,這將是更好的解決方案?
PS:現在我真的想通過卷來實現所有這些東西,但是這種方法有幾個明顯的缺點。 第一個是隔離減少。 第二個是我們還需要將解決方案項目解壓縮到 web 服務上。 但是哪里? 至於我,它看起來很奇怪 :) 但它會工作 99%。 還有其他更合適的解決方案嗎? 謝謝
PPS:很抱歉長時間閱讀。
在容器localhost
內是同一個容器。 如果你有一個 docker-compose,你可以使用服務名稱連接到另一個容器。
例如,如果您有服務db
和app
, app
可以連接到db:5432
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.