[英]How to connect docker-compose to container network and localhost network
如何設置docker-compose文件以連接到內部容器網絡和外部localhost網絡?
我試圖在docker-compose中使用extra_hosts屬性,但無法獲得所需的結果
我的docker-compose包含以下內容:
version: '3.7'
services:
myapp1:
container_name:
myapp1
hostname:
myapp1
build:
context:
.
dockerfile:
Dockerfile
command:
["npm", "start"]
networks:
- container_network # This is an internal container network
myapp2:
... # Same idea as above
networks:
- container_network # This is an internal container network
networks:
container_network:
name:
container_network
driver:
bridge
我也有一個獨立的服務,並使用以下命令運行它:
docker run --name standalone_service --network host
還有其他原因與我的問題無關,為什么standalone_service無法合並到docker-compose文件中。 因此,將此服務合並到docker-compose文件中並使用container_network並不是一種選擇。
我希望myapp1(它是內部container_network的一部分)能夠訪問主機網絡上的standalone_service。 我該怎么做呢?
假設您已將standalone_service
作為--network host
運行,它與--network host
運行的任何其他進程都沒有區別,並且對從Docker容器中進行各種應答,我如何連接到[host]機器應適用您。
第二種更好的方法是在Docker Compose外部創建一個Docker網絡,並將另一個容器連接到該網絡
docker network create container_network
docker run --net container_network -p 8888:8888 --name standalone_service ...
完成后,您可以在docker-compose.yml
聲明與外部網絡相同的網絡 。 您甚至可以將其default
為default
網絡,從而不必手動配置其他服務即可使用它。
version: 3
services:
myapp1:
build: .
ports: ['3000:3000']
environment:
MYAPP2_URL: 'http://myapp2/'
STANDALONE_URL: 'http://standalone_service/'
# gets `command:` from the Dockerfile
# attaches to the `default` network
networks:
default:
external: true
name: container_network
如果您不介意以相反的順序啟動並取決於實現細節,也可以“借用” Docker Compose創建的默認default
網絡。
docker-compose up -d
docker run --net dirname_default -p 8888:8888 --name standalone_service ...
沒有“連接到外部localhost網絡”之類的東西。 每個網絡環境(主機,以及每個容器)分別具有自己的“本地網絡” 127.0.0.0/8; localhost
被固定為IP地址127.0.0.1,並且始終表示“ me”; 在Docker上下文中,“特別是我從中調用的容器”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.