Los*_*ost 7 docker docker-compose docker-swarm
我有两个Docker容器
现在,在本地Web api上是本地主机,控制台应用程序调用API没问题。但是,我不知道何时对这两种东西进行Docker化,我如何才能使Dockerized API的URL可用于Dockerized Console应用程序?
我认为我不需要Docker Compose,因为我将API的Url作为API的参数传递,因此确保Dockerized API'sURL可被Dockerized Console
有任何想法吗?
JSS*_*JSS 11
这是我发现的在本地计算机/单个集群中连接多个容器的最佳方法。
给定:数据提供者服务,数据消费者服务
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
Run Code Online (Sandbox Code Playgroud)
确保http://data-provider-service:8081/在您的data-consumer-service.
您可以在 docker-compose.yml 文件中定义这两个服务并使用depends_on中的属性data-provider-service。例如
data-consumer-service:
depends_on:
- data-provider-service
Run Code Online (Sandbox Code Playgroud)
您可以在我的 Medium 帖子中查看更多详细信息:https://saggu.medium.com/how-to-connect-nultiple-docker-conatiners-17f7ca72e67f
您可以使用该link选项docker run:
运行 API:
docker run -d --name api api_image
Run Code Online (Sandbox Code Playgroud)
运行客户端:
docker run --link api busybox ping api
Run Code Online (Sandbox Code Playgroud)
您应该会看到api可以通过 docker 解决。
也就是说,使用docker-compose仍然是更好的选择。
如果使用撰写功能,这个问题就可以轻松解决。使用 compose,您只需创建一个配置文件 ( 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
Run Code Online (Sandbox Code Playgroud)
要使其运行,只需up这样调用:
docker-compose up
Run Code Online (Sandbox Code Playgroud)
这是运行所有堆栈的最佳方式,因此,请检查此参考: https: //docs.docker.com/compose/
成功!
这个想法不是传递URL,而是传递您要调用的另一个容器的主机名。
请参阅撰写网络
默认情况下,Compose为您的应用设置单个网络。服务的每个容器都加入默认网络,并且都可以被该网络上的其他容器访问,并且可以在与容器名称相同的主机名下被发现。
这就是替换不推荐使用的--link选项的方法。
而且,如果您的容器未在单个Docker服务器节点上运行,则Docker Swarm Mode将在多个节点上实现可发现性。
| 归档时间: |
|
| 查看次数: |
13888 次 |
| 最近记录: |