1

나는 각도기를 사용하여 자동화를 작성했습니다.도커가 내 작업에만 사용되도록하는 방법

젠킨스를 통해 실행하고 싶습니다.

내 쉘 명령 :

docker pull selenium/hub:latest 
docker pull selenium/node-chrome:latest 
docker rm -f selenium-hub && echo "container selenium-hub removed" || echo "container selenium-hub does not exist" 
docker run -d -p 4444:4444 --name selenium-hub selenium/hub:latest 
docker run -d --link selenium-hub:hub selenium/node-chrome:latest 
protractor conf.js 

모든 것이 완벽하게 작동합니다.

내 질문은 : 내 코드 만이 도커와 다른 모든 구성 요소 (예 : 동일한 서버에서 실행중인 앵글 웹 사이트)에서 실행되고 있다는 것을 절대적으로 확신 할 수 있습니까? 예 : 도커를 사용하는 동안주의해야 할 점 내 서버에 100 개의 다른 응용 프로그램이 실행 중이고 그 응용 프로그램에 부작용이 없어야합니다. 일부 응용 프로그램이 nodejs v3에서 실행 중이며 docker가 nodejs v5를 사용하는 경우 nodejs v3을 사용하는 응용 프로그램은 nodejs v3에서만 계속 실행됩니다.

답변

0

다른 앱이 셀레늄을 사용하고 있다는 것을 알고 있다고 생각합니까? 이것은 기술적으로 가능합니다. 셀렌 허브 이미지를 시작할 때 인수 -p 4444:4444은 포트 4444를 로컬 호스트에 바인드합니다.

모든 내용이 포함되어 있는지 확인하려면 -p 4444 인수를 사용하고 도커 컨테이너에서 각도기 테스트를 실행해야합니다. 이 같은 Dockerfile이 (테스트되지 않은) 당신의 검사 결과

FROM node:alpine 

COPY your/source/directory /opt/ 

WORKDIR /opt/ 

RUN npm install -g protractor 

CMD protractor conf.js 

참고 위해 할

: 각도기의 설정은 셀레늄 허브 컨테이너 이름을 참조해야합니다 (즉, 셀레늄 - 허브) 하지 로컬 호스트

+0

다른 응용 프로그램이 포트 4444와 연결되어 있지 않으면 셀레늄을 사용하지 않습니다. 권리? –

+0

도커 컨테이너는 자체 네트워크에 있습니다. 액세스 할 수있는 유일한 방법은 해당 네트워크를 로컬 네트워크에 바인딩하는 것입니다. 이것은'-p 4444 : 4444'가하는 것입니다. 분도기 conf는 아마도 localhost : 4444를 참조하며 셀레늄과 접촉합니다. 다른 응용 프로그램 중 localhost : 4444에 액세스 할 수 없다면 걱정하지 않아도됩니다. –