2016-08-20 3 views
1

각 프로젝트마다 몇 개의 컨테이너로 구성된 도커 개발 환경을 구성했습니다. 나는 종종 프로젝트를 전환한다. 이를 위해서는 한 세트의 컨테이너를 중지하고 다른 컨테이너를 시작해야합니다. 나는 현재 이런 식으로 작업을 수행합니다docker-compose로 응용 프로그램을 시작하고 중지하는 편리한 방법 찾기

$ cd project1 
$ docker-compose stop 
$ cd ../project2 
$ docker-compose up -d 

그래서 나는 응용 프로그램이 현재의 docker-compose.yml이있는 디렉토리로, cd를 실행하는 기억해야합니다, 그것은 다음 내가 거기, cd를 실행하려면 어떤 다른 프로젝트 기억 중지 시작해.

더 좋은 방법이 있습니까? 내가 가지고있는 멀티 컨테이너 응용 프로그램을 기억하는 유틸리티처럼 현재 실행중인 응용 프로그램을 중지하고 수동으로 cddocker-compose ing을 사용하지 않고 다른 응용 프로그램을 실행할 수 있습니까?

은 (그건 그렇고, 하나의 응용 프로그램의 일부를 호스팅 용기 세트에 대한 올바른 용어는 무엇인가?)

+0

Kubernetes는 고래 테마를 맞추기 위해 "pod"를 사용하지만 포드는 컨테이너 세트보다 조금 더 구체적입니다. ECS는 이들을 "과제"라고 부릅니다. 도커는 공식적인 용어를 가지고 있지 않습니다. 아마도 "구성"일까요? – Matt

+0

이전의 것을 멈추지 않고 다른'docker-compose up -d'를 실행하면 어떤 문제가 있습니까? –

+0

@MateuszMoneta 그들은 호스트 시스템의 동일한 포트에 맵핑 될 수 있습니다 (그리고, 필자의 경우 항상 그렇게 할 것입니다). – gvlasov

답변

2

희망 docker-compose-ui 응용 프로그램 관리에 도움이 될 것입니다.

+1

내가 필요로하는 것처럼 보이지만이 대답을 수락하기 전에 확인해야합니다. – gvlasov

0

루비가 조금이라도 입증 된 경우에는 발판을 사용할 수 있습니다.

실을 이용한 베어 예

require 'docker-compose' 

threads = [] 

project_paths = %w(/project/path1 /project/path2 /project/path3 /project/path) 

project_paths.each do |path| 
    threads.push Docker::Compose::Session.new(dir:compose_base_path1) 
end 

begin 
    threads.each do |thread| 
    thread.join 
    end 
rescue SystemExit, Interrupt 
    threads.each do |thread| 
    thread.kill 
    end 
rescue Exception => e 
    handle_exception e 
end 

source

  • docker-compose gem
  • 를 사용하여 (하나 개의 과정없이 다른 고정 표시기-작성 세션을 시작하고 이들을 모두 중지)
  • 스레드

project_paths를 프로젝트의 폴더로 설정하기 만하면됩니다. 그리고 모두 끝내고 싶다면 CTRL + C를 사용하십시오

물론 데몬을 사용하여 그 중 일부를 시작/중지하고 "이름"등을 부여하려고 시도 할 수도 있지만 시작으로 생각할 수 있습니다 비계에 대한 점, 즉

1

enaugh 내가 여기 진짜 문제는 이것이다 생각해야한다 : 용기의 한 세트를 중지하고 다른 시작이 필요합니다

.

다른 프로젝트를 시작하려면 프로젝트를 중지하지 않아도됩니다.

동일한 호스트 포트에 매핑하는 대신 포트를 전혀 매핑하지 않습니다. 그런 다음 컨테이너의 IP를 조회하고, 그에 직접 연결하는 스크립트를 사용

#!/bin/bash 
cip=$(docker inspect -f '{{range $key, $value := .NetworkSettings.Networks}} {{ $value.IPAddress}} {{end}}' $1) 

이 컨테이너의 IP를 검색합니다. 그 명령을 결합하여 URL을 엽니 다.

url=http://cip:8080/ 
xdg-open $url || open $url 

이렇게하면 호스트 포트를 매핑하지 않고도 응용 프로그램을 실행할 수 있습니다. 호스트 포트가 없으면 다른 프로젝트를 중지 할 필요가 없습니다.

관련 문제