2016-09-30 5 views
2

우리는 mongodb, java 백엔드 및 express-js 기반 프론트 엔드로 구성된 작은 프로젝트를 개발 중입니다. 우리는 프로덕션 용도를 제외하고는 모두 docker-compose을 배포 도구로 선택했으며 지금까지 한 가지 예외를 제외하고는 상당히 유용했습니다. 현재도커 작성 오버라이드 파일 관리

, 우리는 그것을 사용

  • 지역 dev에 클러스터를 실행;
  • 통합 테스트 실행 (일부 조정 및 추가 종속성 포함).
  • 로드 테스팅 환경 준비 (추가 조정 포함).
  • 별도의 클라우드 시스템에서 준비/데모 환경을 실행 중입니다. (간결을위한 d-c로 대체 docker-compose) docker-compose.yml, d-c.override.yml, d-c.test.yml, d-c.load.ymld-c.demo.yml :

우리가 고정 표시기-작성 파일 세트를 도출 한 환경에 따라 모든 다양한 비틀기를 처리합니다.

이렇게하면 기본 작업을 제외한 모든 작업을 매우 긴 명령 줄 호출로 수행 할 수 있습니다. 예 :

docker-compose -f docker-compose.yml -f docker-compose.test.yml up -d --build 
docker-compose -f docker-compose.yml -f docker-compose.test.yml exec test_container ./do_tests.sh 

악화됩니다. 그 향상에 대한

지금까지 우리는있어 몇 가지 아이디어 : 전체 입력 절약하는 대신에 부분의 파일을 고정 표시기가-구성

  1. 사용 - 그러나 응용 프로그램 구조 변경/추가 매개 변수가 도입되어 별도의 유지 보수;
  2. (전자의 변형)은 서비스 용으로 extends을 사용하고 복사 붙여 넣기를 최소화합니다 (그러나 추가 복잡성이 추가됩니다).
  3. 은 모든 긴 명령을 Makefile (또는 bash 스크립트)에 저장합니다. 사용의 용이성, 그러나 깔개 아래의 복잡한 복잡성과 같은 느낌;
  4. (이전 버전의 변형) docker-compose plugin/own tooling을 개발하십시오 - 우리의 요구를 처리하는 데 더 명백 할 수 있지만 추가 유지 관리 및 배포의 복잡성.

이러한 아이디어에는 모두 단점이 있습니다. 무엇이 적절한 해결책이고 어떤 도구가 이미 존재하는지 궁금합니다.

+0

동일합니다. 별도의 폴더에 분할했습니다. 간단하게 유지하십시오.) CD 스테이지/도커 - 작성 :-) – opHASnoNAME

답변

1

3 개의 소리가 좋은 해결책이라고 생각합니다. "숨겨진 복잡성"이 아니라 반복적 인 작업 (긴 명령 행 입력)을 자동화하는 것입니다.

Makefile도 작동하지만, dobi (면책 조항 :이 도구의 저자)에도 관심이있을 수 있습니다. dobi을 사용하면 다른 파일 및 프로젝트 이름으로 Compose를 실행하는 것을 포함하여 yaml 파일에서 모든 프로젝트 작업을 정의 할 수 있습니다. 프로젝트의 config (설정) 예 그럼 당신은

당신은 심지어 일회성 작업 중 일부가 이동 될 수 있음을 찾을 수있는 등, dobi dev와 함께 작업을 실행할 수있는이

compose=dev: 
    files: [docker-compose.yaml, d-c.override.yml] 

compose=test: 
    files: [docker-compose.yaml, d-c.test.yml] 

compose=load: 
    files: [docker-compose.yaml, d-c.load.yml] 

같은 것을 보일 수 있습니다 dobi config를 사용하여 추가 작성 우선 지정이 필요 없습니다.

관련 문제