Configs 최상위 요소
Configs 최상위 요소 (Configs top-level element)
Compose 파일의 configs 최상위 요소는 서비스들이 Docker 이미지를 다시 빌드하지 않고도 동작을 조정할 수 있게 해주는 구성 데이터를 정의해요. 볼륨처럼 config는 컨테이너 파일시스템에 파일로 마운트돼요.
출처: 문서
본문
Config는 서비스들이 Docker 이미지를 다시 빌드하지 않고도 동작을 적응시킬 수 있게 해요. 볼륨과 마찬가지로 config는 컨테이너의 파일시스템에 파일로 마운트돼요. 컨테이너 안에서 마운트 지점의 위치는 Linux 컨테이너에서는 기본적으로 /<config-name>, Windows 컨테이너에서는 C:\<config-name>이에요.
서비스는 services 최상위 요소 안의 configs 속성으로 명시적으로 부여될 때만 config에 접근할 수 있어요.
기본적으로 config는:
- 컨테이너 명령을 실행하는 사용자가 소유하지만 서비스 설정으로 오버라이드할 수 있어요.
- 서비스가 이를 오버라이드하도록 설정하지 않으면 세계 읽기 권한(mode 0444)을 가져요.
최상위 configs 선언은 Compose 애플리케이션의 서비스에 부여되는 구성 데이터를 정의하거나 참조해요. config의 소스는 file, environment, content 또는 external 중 하나예요.
file: config가 지정된 경로의 파일 내용으로 만들어져요.environment: config 내용이 환경 변수의 값으로 만들어져요. Docker Compose 버전 2.23.1에서 도입.content: 내용이 인라인 값으로 만들어져요. Docker Compose 버전 2.23.1에서 도입.external:true로 설정하면 이 config가 이미 생성되었음을 지정해요. Compose는 그것을 만들려 시도하지 않고, 존재하지 않으면 오류가 발생해요.
예시 1 (Example 1)
config 객체의 이름은 컨테이너 엔진에서 조회할 이름이에요. 이 필드는 특수 문자를 포함하는 config를 참조하는 데 쓸 수 있어요. 이름은 있는 그대로 사용되고 프로젝트 이름으로 스코프를 한정하지 않아요.
<project_name>_http_config는 애플리케이션이 배포될 때 생성되는데, httpd.conf의 내용을 구성 데이터로 등록해요.
configs:
http_config:
file: ./httpd.conf
다르게는 http_config를 external로 선언할 수 있어요. Compose는 관련 서비스에 구성 데이터를 노출하기 위해 http_config를 조회해요.
configs:
http_config:
external: true
예시 2 (Example 2)
external config 조회는 name을 지정해서 별도의 키를 사용할 수도 있어요.
다음 예제는 이전 예제를 수정해서 HTTP_CONFIG_KEY 매개변수를 사용해 config를 조회해요. 실제 조회 키는 변수의 보간(interpolation)으로 배포 시점에 설정되지만, 컨테이너에는 하드코딩된 ID http_config로 노출돼요.
configs:
http_config:
external: true
name: "${HTTP_CONFIG_KEY}"
예시 3 (Example 3)
<project_name>_app_config는 애플리케이션이 배포될 때 생성되는데, 인라인된 내용을 구성 데이터로 등록해요. 이는 Compose가 config를 만들 때 변수를 추론한다는 뜻이라, 서비스 설정에 따라 내용을 조정할 수 있어요:
configs:
app_config:
content: |
debug=${DEBUG}
spring.application.admin.enabled=${DEBUG}
spring.application.name=${COMPOSE_PROJECT_NAME}
예시 4 (Example 4)
<project_name>_simple_config는 애플리케이션이 배포될 때 생성되는데, 환경 변수의 값을 구성 데이터로 사용해요. 보간이 필요 없는 단순한 구성 값에 유용해요:
configs:
simple_config:
environment: "SIMPLE_CONFIG_VALUE"
external이 true로 설정되면 name을 제외한 모든 다른 속성은 무관해요. Compose가 다른 속성을 감지하면 Compose 파일을 무효로 거부해요.
더 알아보기 (Learn more)
- Compose에서 config를 사용하는 방법은 Docker Compose 문서를 참고해요.
- 민감 데이터에는
secrets요소를 참고해요.