docker-compose.yml의 환경 변수 재사용
여러 컨테이너 간에 공유되는 환경 변수를 재사용할 수 있습니까?
이 방법은 다음 예에서 설명한 것처럼 중복을 방지하는 것입니다.
version: '2'
services:
db:
image: example/db
ports:
- "8443:8443"
container_name: db
hostname: db
environment:
- USER_NAME = admin
- USER_PASSWORD = admin
svc:
image: example/svc
depends_on:
- db
ports:
- "9443:9443"
container_name: svc
hostname: svc
environment:
- DB_URL = https://db:8443
- DB_USER_NAME = admin
- DB_USER_PASSWORD = admin
그extends옵션은 좋을 수 있지만 에서 지원되지 않습니다.3.x파일을 작성합니다.다른 방법은 다음과 같습니다.
확장 필드(파일 3.4+ 작성)
3.4 이상의 파일 작성을 사용할 수 있는 경우 확장 필드가 가장 좋은 옵션일 것입니다.
도커-docker.yml
version: '3.4' x-common-variables: &common-variables VARIABLE: some_value ANOTHER_VARIABLE: another_value services: some_service: image: someimage environment: *common-variables another_service: image: anotherimage environment: <<: *common-variables NON_COMMON_VARIABLE: 'non_common_value'env_file 디렉티브
도커-docker.yml
version: '3.2' services: some_service: image: someimage env_file: - 'variables.env' another_service: image: anotherimage env_file: - 'variables.env'variables.env
VARIABLE=some_value ANOTHER_VARIABLE=another_value프로젝트 루트의 .env 파일(또는 실제 작성 환경의 변수)
.env 파일의 변수는 서비스 구성에서 참조할 수 있습니다.
도커-docker.yml
version: '3.2' services: some_service: image: someimage environment: - VARIABLE another_service: image: anotherimage environment: - VARIABLE - ANOTHER_VARIABLE.env
VARIABLE=some_value ANOTHER_VARIABLE=another_value
확장 지시문을 사용할 수 있습니다(구성 시 사용 가능).1.x그리고.2.x여러 컨테이너가 다음을 상속받습니다.environment기본 서비스 설명의 구성입니다.예를 들어, 다음과 같은 이름의 파일을 입력합니다.base.yml:
version: '2'
services:
base:
environment:
DB_URL: https://db:8443
DB_USER_NAME: admin
DB_USER_PASSWORD: admin
그럼 당신의docker-compose.yml:
version: '2'
services:
container1:
image: alpine
command: sh -c "env; sleep 900"
extends:
file: base.yml
service: base
container2:
image: alpine
command: sh -c "env; sleep 900"
extends:
file: base.yml
service: base
environment:
ANOTHERVAR: this is a test
그다음에 안에.container1다음과 같이 표시됩니다.
DB_URL=https://db:8443
DB_USER_NAME=admin
DB_USER_PASSWORD=admin
그리고 그 안에.container2다음과 같이 표시됩니다.
DB_URL=https://db:8443
DB_USER_NAME=admin
DB_USER_PASSWORD=admin
ANOTHERVAR=this is a test
당신은 분명히 사용할 수 있습니다.extends이외의 일로environment지시사항; 도커 브라우저를 사용할 때 중복을 방지하는 좋은 방법입니다.
도커 합성 파일 내에서 로컬 환경 변수를 참조할 수 있습니다.당신이 하고 싶은 일이 당신이 만드는 것이라고 가정할 때USER_NAME와 같은DB_USER_NAME:
도커-docker.yml
version: '2'
services:
db:
image: example/db
ports:
- "8443:8443"
container_name: db
hostname: db
environment:
- USER_NAME = ${USERNAME}
- USER_PASSWORD = ${PASSWORD}
svc:
image: example/svc
depends_on:
- db
ports:
- "9443:9443"
container_name: svc
hostname: svc
environment:
- DB_URL = https://db:8443
- DB_USER_NAME = ${USERNAME}
- DB_USER_PASSWORD = ${PASSWORD}
그런 다음 도커 합성을 다음과 같이 실행합니다.
$ USERNAME="admin" PASSWORD="admin" docker-compose up
또는 더 영구적이고 반복적으로 입력하기 쉬운 항목을 선택할 수 있습니다.
$ printf '%s\n%s\n' 'export USERNAME="admin"' 'export PASSWORD="admin"' >> ~/.bash_profile
$ source ~/.bash_profile
$ docker-compose up
언급URL : https://stackoverflow.com/questions/36283908/re-using-environment-variables-in-docker-compose-yml
'source' 카테고리의 다른 글
| PowerShell에서 %ProgramFiles(x86)%와 같은 괄호가 있는 환경 변수 이름? (0) | 2023.08.05 |
|---|---|
| malloc "double free" 오류의 원인을 찾는 방법은 무엇입니까? (0) | 2023.08.05 |
| 노드 JS 버전 번호가 혼동 (0) | 2023.08.05 |
| SQL Server: ORDER BY를 사용하여 테이블 업데이트 (0) | 2023.08.05 |
| Node.JS: 오류 발생: [nodedemon] 내부 감시 실패: ENOSPC 감시 (0) | 2023.08.05 |