>source

응용 프로그램 작성자가 제공 한 도커 작성 파일을 사용하여 프로덕션 환경 (단일 호스트)에 도커 응용 프로그램을 배포하려고합니다. 도커 기반 솔루션은 모 놀리 식 바이너리 설치 프로그램의 드롭 인 대체품으로 사용됩니다.

이 응용 프로그램은 기본 구성으로 제공되지만 관리자가 약간의 구성 변경 사항을 적용하려고합니다.

docker-compose.yml 에 정의 된 서비스에 사용자 정의 구성을 적용하는 몇 가지 방법이 있습니다.  그러나 모범 사례로 간주되는 것은 확실하지 않습니다. 내가 지금 생각하고있는 두 가지는 :

  • 구성을 새 이미지로 만들기. 여기서는 docker-compose 파일에 정의 된 각 서비스에 대한 빌드 단계를 추가하고 최소 Dockerfile 를 만듭니다.   COPY 를 사용하는  이미지의 기존 구성 파일을 사용자 정의 구성 파일로 바꿉니다. sed 사용  그리고 echo   CMD  문은 파일을 도매로 교체하지 않고도 구성 인라인을 변경하는 데 사용될 수 있습니다.

  • 호스트에 저장된 구성으로 바인드 마운트 사용. 이 경우 모든 사용자 정의 구성 파일을 호스트 시스템의 디렉토리에 저장하고 volumes 에서 바인드 마운트를 정의합니다.  docker-compose 파일의 각 서비스에 대한 매개 변수입니다.

응용 프로그램이 완전히 포함되어 있기 때문에 첫 번째 옵션이 가장 깨끗해 보이지만 추가 구성을 변경하려면 이미지를 다시 작성해야합니다. 두 번째 옵션은 구성을 즉석에서 변경할 수 있기 때문에 가장 쉬운 것 같습니다 (컨테이너에 필요한 서비스를 다시 시작).

Docker 서비스에 커스텀 구성을 주입하는 데 권장되는 방법이 있습니까?

  • 답변 # 1

    컨텍스트를 제공하면 바인드 마운트를 사용하는 것이 좋습니다.

    Docker 이미지는 다른 상황에서 재사용 할 수 있어야하며 특정 구성 (예 : 환경)을 위해서만 전체 이미지를 작성하면 그 목적을 상실하게됩니다.

    기본 이미지에서 제공하는 일반 구성 대신 환경 별 이미지를 생성합니다

    구성을 변경해야 할 때마다 전체 이미지를 다시 작성해야하는 반면, 바인드 마운트를 사용하면 응용 프로그램별로 구성 파일을 간단히 다시 시작하거나 다시 읽을 수 있습니다.

    Docker 설명서의 권장 사항 :

    Dockerfile 모범 사례

    와이즈 비즈

    바인드 마운트에 대한 유용한 사용 사례

    와이즈 비즈

    You are strongly encouraged to use VOLUME for anymutable and/or user-serviceable parts of your image.

관련 자료

  • 이전 excel vba에서 수식을 계산하고 변수에 값을 넣는 방법은 무엇입니까? 예를 들어 x를 counta (sheet1! a - a)와 동일하게 설정하려고합니다
  • 다음 ios - UITabBarController 내에서 TabBar와 TabBarItem의 차이점