2017-10-03 16 views
0

호스트 이름별로 다른 컨테이너를 참조하고 싶기 때문에 네트워크가 필요합니다.Testcontainers가 없으면 나를 위해 도커 네트워크를 만들 수 있습니까?

나는 --link도 사용할 수 있지만 더 이상 사용되지 않으며 곧 사라질 수 있습니다. 그렇기 때문에 Testcontainers가 나를 위해 도커 네트워크를 만들 수 있는지 궁금합니다. 명령 줄

난 그냥 docker network create bridge2을 실행하는 것하고 내가 시작할 수 있습니다 컨테이너를 다음과 같이 :

docker run -it --rm --net=bridge2 --name alpine1 alpine 
docker run -it --rm --net=bridge2 --name alpine2 alpine 

alpine1 컨테이너에서 nslookup alpine2를 해결.

기본값 --net=bridge 네트워크를 사용하거나 --net 옵션을 건너 뛰려고하면 (실제로는 동일 함) 이름으로 참조하면 작동하지 않습니다.

+0

당신을위한 옵션을 고정 표시기가-구성되어 있습니까? –

+0

@ YannicHamann 아니오, Testcontaiers와 같이 보이기 때문에 노출 된 포트에서만 작동하며 예를 들어 임의로 명령을 실행할 수 없습니다. 작성에는 많은 한계가 있습니다. – Derp

답변

1

예, TestContainers로 네트워크를 생성 할 수 있습니다. 우리는 곧 그것을 문서화하는거야,하지만 간단합니다 같은 :

첫째, 네트워크 생성 : 그것은 가입하여 컨테이너를 구성, 그리고

@Rule 
public Network network = Network.newNetwork(); 

을 :

@Rule 
public NginxContainer nginx = new NginxContainer<>() 
     .withNetwork(network) // <--- Here 
     .withNetworkAliases("nginx") // <--- "hostname" of this container 
     .withCustomContent(contentFolder.toString()); 

@Rule 
public BrowserWebDriverContainer chrome = new BrowserWebDriverContainer<>() 
     .withNetwork(network) // <--- And here 
     .withDesiredCapabilities(DesiredCapabilities.chrome()); 

지금의 Nginx 컨테이너는 Chrome에 "http://nginx/"으로 표시됩니다. 우리의 테스트에서

같은 예 :
https://github.com/testcontainers/testcontainers-java/blob/540f5672df90aa5233dde1dde7e8a9bc021c6e88/modules/selenium/src/test/java/org/testcontainers/junit/LinkedContainerTest.java#L27

+0

쿨, 이것은 정확히 내가이 질문을 게시 Testcontainers에서 기대했던 것입니다 :) – Derp