도커 구성을 위해 환경 변수를 전달하는 방법
저는 컨테이너를 가동하려고 합니다.이미 개인 도커 레지스트리에 이미지를 업로드했습니다.이미지를 다운로드하여 배포할 작성 파일을 작성하고 싶습니다.하지만 저는 도커-콤포지 run 명령의 변수로 TAG 이름을 전달하고 싶습니다.제 작곡 파일은 아래와 같습니다.도커 합성 명령의 일부로 KB_DB_TAG_VERSION 값을 전달하려면 어떻게 해야 합니까?
version: '3'
services:
db:
#build: k-db
user: "1000:50"
volumes:
- /data/mysql:/var/lib/mysql
container_name: k-db
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
image: XX:$KB_DB_TAG_VERSION
image: k-db
ports:
- "3307:3306"
두 가지 옵션이 있습니다.
- 다른 답변에서 이미 제안한 대로 .env 파일을 생성합니다.
프레펜드
KEY=VALUE
짝을 지어주기docker-compose
명령, 예:KB_DB_TAG_VERSION=kb-1.3.20-v1.0.0 docker-compose up
스크립트의 이전 버전에서도 다음과 같이 내보낼 수 있습니다.
export KB_DB_TAG_VERSION=kb-1.3.20-v1.0.0 docker-compose up
실행할 디렉토리에 파일을 생성할 수 있습니다.docker-compose up
명령(및 당신의docker-compose.yml
파일 위치)에 다음 내용이 포함됩니다.
KB_DB_TAG_VERSION=kb-1.3.20-v1.0.0
당신의.docker-compose.yml
파일은 다음과 같아야 합니다(추가됨).{
그리고.}
):
version: '3'
services:
db:
user: "1000:50"
volumes:
- /data/mysql:/var/lib/mysql
container_name: k-db
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
image: XX:${KB_DB_TAG_VERSION}
image: k-db
ports:
- "3307:3306"
위와 같이 변경 후에는 다음 명령을 사용하여 변경사항이 반영되었는지 확인합니다.docker-compose config
변수가 변수 값으로 대체됩니다.변수 교체에 대한 자세한 내용은 여기 페이지를 참조하십시오.
단지 다른 사람들, 특히 @JakubKukul에 의해 윤곽이 드러난 것을 보완하기 위해.
보안을 위해 사용자 이름/암호와 같은 취약한 정보가 버전 제어 하에 있는 경우에는 도커 합성 파일에 보관하지 않을 수 있습니다.호스트에 있는 환경 변수를 컨테이너 내부의 환경 변수에 매핑할 수도 있습니다.이 경우 다음과 같은 것이 될 수 있습니다.
version: '3'
services:
db:
#build: k-db
user: "1000:50"
volumes:
- /data/mysql:/var/lib/mysql
container_name: k-db
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
image: XX:$KB_DB_TAG_VERSION
image: k-db
ports:
- "3307:3306"
어디에MYSQL_PASSWORD
둘 다일 수 있습니다.
- 호스트의 환경 변수(현재 셸 세션에만 있을 수 있음)
- 컨테이너 내부의 환경 변수는
db
서비스
파일에 값을 지정하지 않고도 환경 변수를 명령줄의 컨테이너에 전달할 수 있습니다.추가 anenvironment
도커 지정 파일의 컨테이너 서비스 정의에 변수 이름만 있는 키(값 또는 할당 연산자 없음):
db:
...
environment:
- KB_DB_TAG_VERSION
할당되지 않은 상태에서 이러한 방식으로 사용하면 도커 컴포지트가 현재 환경/쉘에서 환경 변수를 조회합니다.
KB_DB_TAG_VERSION=mytagversion docker-compose up
참조: https://docs.docker.com/compose/environment-variables/ #pass-environment-to-containers
docker-compose --env-file .\.env up
https://docs.docker.com/compose/environment-variables/
Windows의 경우 내보내기 대신 다음을 사용합니다.
$env.KB_DB_TAG_VERSION = "1.3.20-v1.0.0"
docker-compose up
도커-compose.yml 파일에 추가합니다.
env_file:
- .env_file
의 신에게에.db
service 여기서 .env_file은 .env 파일입니다(그에 따라 이름 변경).
version: '3'
services:
db:
#build: k-db
user: "1000:50"
volumes:
- /data/mysql:/var/lib/mysql
container_name: k-db
env_file:
- .env_file
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
image: XX:$KB_DB_TAG_VERSION
image: k-db
ports:
- "3307:3306"
언급URL : https://stackoverflow.com/questions/49293967/how-to-pass-environment-variable-to-docker-compose-up
'programing' 카테고리의 다른 글
WHERE 절은 IN과 JOIN 이전 또는 이후에 더 잘 실행됩니다. (0) | 2023.08.29 |
---|---|
Powershell의 개별 파일 형식 목록 (0) | 2023.08.29 |
브라우저 자동 완성/수정 양식이 Ajax 요청에서 작동하지 않음 (0) | 2023.08.29 |
ASP에서 인증되지 않은 경우 로그인으로 리디렉션합니다.NET 코어 (0) | 2023.08.29 |
BLOB 및 CLOB 설명 (0) | 2023.08.29 |