2016-08-22 3 views
3

생산 레일 응용 프로그램을 도킹하려고합니다.Docker, 도커에서 capistrano 작업을 바꾸는 방법

현재 app는 Anipal을 사용하여 구성되었으며 capistrano를 사용하여 배포됩니다.

나는 다른 고정 표시기 배포 전략의와 생각을 고정 표시기에 카피 스트라 노의 치우는에 대한 연구 및 I 구성하고 응용 프로그램을 배포 할 dockerfile을 쓰고

을-구성 고정 표시기로 고정 표시기를 사용하는 것입니다,하지만 배포가 다소 복잡 capistrano와 비슷한 app 인 deploy.rb는 몇 가지 레이크 작업을 사용하여 디렉토리를 만들어 앱 이름을 설정하고 몇 가지 변수를 가져 오는 것과 같은 사전 배포 작업을 설정합니다.

dockerfile에서 뚜껑 작업을 복제하거나 어떻게 뚜껑 파일이나 도커 컨테이너에서 현재 cap rake 작업을 사용할 수 있습니까?

답변

1

이제는 뒤로 물러나서 Docker의 이점이 추가 된 복잡성보다 중요한지 고려해보십시오. 이 구성 요소가 있다고 가정하면이 구성 요소를 더 잘 작동시키는 방법에 대한 몇 가지 제안 사항이 있습니다.

구성 관리자는 구성 관리 시스템이지만 오케스트레이션 (즉, 일련의 원격 컴퓨터에서 명령 실행)을 위해 설계되었습니다. 여기에는 Capistrano와의 크로스 오버가 있습니다. 따라서 Capistrano 작업을 Anipal으로 이식하고 스택에서 도구 (따라서 복잡성)를 제거하는 것이 유용 할 수 있습니다. 이는 응용 프로그램을 배포하기 위해 실행하는 deploy.yaml 안내서를 작성함으로써 발생할 수 있습니다.

Docker도 책임을 중복되지만 다른 영역에서는 구성과 겹칩니다. 응용 프로그램에 필요한 시스템 구성 중 일부는 Anatile를 사용하는 시스템 전체 수준이 아니라 Dockerfile을 사용하여 컨테이너 내부에서 구성 할 수 있습니다.

응용 프로그램 환경을 설정하는 레이크 작업이있는 경우 Dockerfile의 RUN 명령에 넣을 수 있습니다. 그러나 이러한 경우에만 을 빌드 할 때 을 빌드 할 때 을 빌드 할 때가 아니라을 실행하면 이미지가 빌드 될 때만 실행됩니다.

일반적으로 말하자면, Docker는 앱의 한 부분 (코드의 특정 체크 아웃 포함)을 실행하는 데 필요한 모든 것을 가진 컨테이너를 설정합니다. Ansible은 컨테이너를 실행하는 환경을 구성하고 컨테이너를 업데이트하고 올바른 위치에 배치하는 모든 작업을 관리합니다.

+0

예. dockerfile을 빌드하는 동안이 파일을 가져 오는 것이 옳은데, 현재 컨테이너에서 작업중인 capistrano의 레이크 작업을 얻는 것입니다. 아니면 단순히 쉘 스크립트의 파일을 변환하여 dockerfile에서 호출해야합니까? btw 귀하의 자세한 설명 주셔서 감사합니다,하지만 난 단지 용기를 제공하는 책임을 사용합니다. – slashRahul

+0

Cap 명령이 수행하는 작업에 따라 다릅니다. 그들이 이미 로컬 컴퓨터에서만 작동한다면 dockerfile에서 간단히 '실행'할 수 있습니다. 원격 호스트에서 작동하도록 설계된 경우 ssh와 같은 표준 오케스트레이션 메소드를 통해 도커 컨테이너에 액세스 할 수 있도록하려면 약간의 작업을 수행하거나 로컬 시스템에서만 작동하도록 다시 작성해야합니다. –