我正在尝试在两个容器之间进行通信,但无法做同样的事情。 我在docker compose中添加了一个名为'server'的服务,该服务依赖于另一个名为'endpoint'的服务。 我需要将'端点'的ip和端口传递给'server',我也在做同样的事情
it('Should work', function() {
spyOn(Service, 'get').and.callThrough();
expect(Service.get).not.toHaveBeenCalled();
createController();
expect(Service.get).toHaveBeenCalled();
expect(scope.property).toBeFalsy();
deferred.resolve('some data');
$rootScope.$digest();
expect(scope.property).toBeTruthy();
});
但是现在我没有在使用以下命令的主机列表中看到'端点':
command: -userver -e endpoint:51393
这是输出:
docker-compose exec server cat /etc/hosts
我的完整docker-compose.yml文件如下:
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.21.0.3 49f4808fa677
答案 0 :(得分:2)
当您使用当前版本的docker compose时,不再通过操作容器的hosts文件来完成从另一个容器到达一个容器,因为这是一个非常静态的设置。
现在,docker-compose使用某种dns服务,允许同一网络中的所有容器在其服务名称下相互查看。这允许停止依赖容器而不会导致依赖容器也停止/重启。为此,您还无需指定depends_on
。这只需要在重新启动依赖项时触发依赖服务的重新启动。
有关详细信息,请查看有关网络的docker-compose docs。
用于调试情况的一些命令:
docker-compose exec server nslookup endpoint
docker inspect <container_name_of_service>