我有两个Docker容器
现在,在我的本地web api上是本地主机,Console应用程序调用API没有问题。但是,我不知道这两件事何时是Docker化的,我怎样才能使Dockerized API的Url可用于Dockerized Console应用
我认为我不需要Docker Compose,因为我将API的Url作为API的参数传递,因此只需要确保Dockerized API's
url可以通过{{Dockerized Console
来访问1}}
有什么想法吗?
答案 0 :(得分:4)
您可以将link
选项与docker run
:
运行API:
docker run -d --name api api_image
运行客户端:
docker run --link api busybox ping api
您应该看到Docker可以解析api
。
也就是说,与docker-compose
一起使用仍然是一个更好的选择。
答案 1 :(得分:2)
我们的想法不是传递网址,而是要传递其他容器的主机名 见Networking in Compose
默认情况下,Compose会为您的应用设置单个网络。服务的每个容器都加入默认网络,并且可以被该网络上的其他容器访问,并且可以通过与容器名称相同的主机名发现。
这就是取代deprecated --link
option。
如果您的容器未在单个Docker服务器节点上运行,Docker Swarm Mode将在多个节点之间启用该可发现性。
答案 2 :(得分:2)
如果使用撰写功能,可以轻松解决问题。使用compose,您只需创建一个配置文件(ActiveSheet.Range("B:B").Replace "Global Macro", "GM"
),如下所示:
docker-compose.yml
要让它运行,只需像这样调用version: '3'
services:
db:
image: postgres
web:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
:
up
这是运行所有堆栈的最佳方式,因此,请查看以下参考: https://docs.docker.com/compose/
成功!
答案 3 :(得分:0)
这是我发现在本地机器/单个集群中连接多个容器的最佳方式。
给定:数据提供者服务,数据消费者服务
docker network create data-network
docker run --name=data-provider-service --net=data-network -p 8081:8081 data-provider-image
docker run --name=data-consumer-service --net=data-network -p 8080:8080 data-consumer-image
确保在您的 http://data-provider-service:8081/
中使用类似的 URI:data-provider-service
。
您可以在 docker-compose.yml 文件中定义这两个服务,并在 depends_on
中使用 data-provider-service
属性。
例如
data-consumer-service:
depends_on:
- data-provider-service
您可以在我的 Medium 帖子中查看更多详细信息:https://saggu.medium.com/how-to-connect-nultiple-docker-conatiners-17f7ca72e67f