簡體   English   中英

在沒有 Docker Compose 的情況下連接 Rails 和 Postgres 容器

[英]Connecting Rails and Postgres containers without Docker Compose

我知道 Docker Compose (compose) 是一種工具,除其他外,它使在容器之間建立互連變得更加容易,但我正在嘗試在沒有 compose 的情況下練習這樣做,以了解該過程是什么樣的(並更深入地了解 compose in從長遠來看)。

是很難運行一個應用程序(在我的情況下是rails)+一個沒有組合的sql服務器的原因嗎,因為它們是獨立的單元,所以他們不知道彼此的文件系統,所以不知道如何定位彼此這就是我們使用 compose 的原因? 還有別的原因嗎?

您將如何在不使用 compose 的情況下連接容器? 如果有幫助,我發布了一些關於下面兩個容器的元數據。

在我的 postgres 容器上運行 docker 檢查時,我看到一個 ENV 和網絡配置:

"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/postgresql/12/bin",
"PGDATA=/var/lib/postgresql/data"
]

"Networks": {
"bridge": {
"NetworkID": "e68fdafe2110067389853515b05b09cd0ce75c500190fae85abff82417794b7f",
"EndpointID": "0d5564c073286bf7c1d708d52146653cf75705f34c1e175963eba4c158424399",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"MacAddress": "02:42:ac:11:00:02",
}
}

對於 rails 容器:

"Env": [
"PATH=/usr/local/bundle/bin:/usr/local/bundle/gems/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
]

"Networks": {
"bridge": {
"NetworkID": "e68fdafe2110067389853515b05b09cd0ce75c500190fae85abff82417794b7f",
"EndpointID": "e76ad694f04b7ca07e388ab39ab81b00409500d4c175b5ce9f90a8c740da7246",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.3",
"MacAddress": "02:42:ac:11:00:03",
}
}

Docker 當你有一堆容器並且你想通過使用docker-compose updocker-compose down等單個命令來啟動/停止整個環境時,compose 非常方便。 正如您所指出的,它還創建了一些常見的東西來幫助容器相互通信——比如網絡。

如果你想讓自己變得困難,你總是不能使用 compose 並手動啟動你的容器並將它們連接到一個公共網絡:

docker network create mynetwork

這將使用默認bridge驅動程序創建一個名為mynetwork的網絡。 接下來你必須運行你的容器並將它們連接到這個網絡:

docker container run --network mynetwork --name container1 image1
docker container run --network mynetwork --name container2 image2

這與 compose 所做的類似 - 您可以通過 DNS 名稱 - container1container2通過此網絡訪問這些容器。

暫無
暫無

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

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