2016-06-04 2 views
2

docker-compse 문서에 설명 된 것과 같은 간단한 웹 앱 스택이 있다고 가정 해 보겠습니다. 그 docker-compose.yml은 다음과 같습니다데이터베이스의 도커 컨테이너를 프로덕션 환경의 다른 호스트에 두는 방법은 무엇입니까?

version: '2' 
services: 
    db: 
    image: postgres 
    web: 
    build: . 
    command: python manage.py runserver 0.0.0.0:8000 
    volumes: 
     - .:/code 
    ports: 
     - "8000:8000" 
    depends_on: 
     - db 

이 노트북에 개발에 좋은 곳입니다. 그러나 프로덕션 환경에서는 db 컨테이너가 자체 호스트에 있어야합니다. 자습서 웹 컨테이너를 수평 확장하려면 docker-swarm을 사용할 수 있지만 db의 인스턴스와 web의 인스턴스가 같은 시스템에서 실행된다는 사실에 아무런 관심을 기울이지 않아야합니다.

특정 컨테이너가 docker을 사용하여 자체 시스템 (또는 특정 시스템에서 더 좋을 수 있음)을 요구할 수 있습니까? 그렇다면 어떻게? 그렇지 않다면 다중 컨테이너 애플리케이션에서 데이터베이스를 다루는 고정 방법은 무엇입니까?

답변

1

제 생각에 데이터베이스는 컨테이너 세계의 가장자리에 있습니다. 개발 및 테스트에는 유용하지만 프로덕션 데이터베이스는 본질적으로 매우 임시 또는 휴대용이 아닙니다. Flocker 확실히 은 Cassandra와 같은 확장 가능한 데이터베이스 유형을 지원하지만 데이터베이스는 컨테이너 화 된 앱 (RDS, Cloud SQL 등) 뒤에있는 서비스로 더 잘 처리 될 수있는 매우 구체적인 요구 사항을 가질 수 있습니다.

어쨌든 컨테이너 오케스트레이션 도구가 필요합니다.

Compose + Swarm에 manual scheduling constraints을 적용하여 컨테이너가 실행할 수있는 도커 호스트를 지정할 수 있습니다. 데이터베이스를 들어, 당신은 할 수 있습니다

environment: 
    - "constraint:storage==ssd" 

그렇지 않으면 설정 할 수 Ansible, Chef와 더 정적 도커 환경, Puppet

고정 표시기 지원하는 다른 오케스트레이션 도구를 사용하여 Kubernetes, MesosNomad

컨테이너 서비스 사용 : Amazon ECS, Docker Cloud/Tutum

관련 문제