一个Docker容器如何调用另一个Docker容器
我有两个Docker容器
- 一个Web API
- 调用Web API的控制台应用程序
现在,在我的本地web api是本地主机和控制台应用程序调用API没有问题。但是,我不知道什么时候这两件事是Docker化,我怎么可能使Dockerized API应用程序的Dockerized API的Url?
我不认为我需要一个Docker撰写,因为我通过API的Url作为API的参数,所以它只是确保Dockerized API's
URL可以通过Dockerized Console
访问
有任何想法吗?
使用撰写function可以很容易地解决问题。 通过撰写,您可以像这样创build一个configuration文件( 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
为了使它运行,只需调用这样的:
docker-compose up
这是运行所有堆栈的最好方法,所以请检查以下参考: https : //docs.docker.com/compose/
成功!
这个想法不是传递url,而是要调用的另一个容器的主机名。
请参阅撰写中的联网
默认情况下,Compose会为您的应用程序设置一个networking。 服务的每个容器都join默认networking,并且该networking上的其他容器都可以访问它们,并且可以通过与容器名称相同的主机名来发现它们。
这是什么replace弃用的 – --link
选项 。
如果你的容器没有运行在一个Docker服务器节点上,那么Docker Swarm模式将在多个节点上启用这个发现。
您可以使用docker run
的link
选项:
运行API:
docker run -d --name api api_image
运行客户端:
docker run --link api busybox ping api
你应该看到api
可以被docker解决。
也就是说,用docker-compose
操作仍然是一个更好的select。