docker-compose 환경변수 사용 및 치환

docker-compose 환경변수 사용 및 치환 방법

docker-compose를 실행할 때, 반복되는 값 혹은 변경 가능한 값을 변수화 해놓으면 재사용성을 높일 수 있다. docker-compose 사용시 어떻게 변수화를 할 수 있는지 정리한다.

 

샘플 yml 파일

version: '3'
services:
  api:
    image: myservice:1.0
    volumes:
    - /home_dir/commitlog:/var/lib/cassandra/commitlog:rw

만약, 원하는 결과물 yml 파일이 위와 같다고 하자. 버전이 달라질 수 있고, 디렉토리가 변할 수 있다고 할 수 있다. 이 값들을 변수화 해보고자 한다.

 

변수 적용한 yml 파일

변수를 표기할 때는, ${변수명}과 같이 표기하면 된다.

version: '3'
services:
  api:
    image: myservice:${VERSION}
    volumes:
    - ${HOME_DIR}/commitlog:/var/lib/cassandra/commitlog:rw




변수가 잘 동작하는지 검증하는 커맨드

$ docker-compose config

위 명령어로 현재 구성을 확인할 수 있다. 즉, 변수에 적당한 값이 지정이 되어 있다면, 제대로 설정이 반영이 되는지는 위 명령어로 사전 검증이 가능하다.

 

변수 적용 방법-1: 실행시 파라미터 명시

$ VERSION=1.0 HOME_DIR=/test docker-compose config

services:
  api:
    image: myservice:1.0
    volumes:
    - /test/commitlog:/var/lib/cassandra/commitlog:rw
version: '3'

실행 스크립트 앞에 변수를 선언하고 실행해보면, 결과가 반영이 된 것을 확인할 수 있다.

 

변수 적용 방법-2: export로 환경변수 선언

$ export VERSION=1.0
$ export HOME_DIR=/test
$ docker-compose config

services:
  api:
    image: myservice:1.0
    volumes:
    - /test/commitlog:/var/lib/cassandra/commitlog:rw
version: '3'

shell에서 환경변수가 선언되어 있다면, 그대로 사용이 가능하다는 것을 확인할 수 있다.




변수 적용 방법-3: .env내 환경변수 선언

$ cat .env
VERSION=1.0
HOME_DIR=/test

$ docker-compose config

services:
  api:
    image: myservice:1.0
    volumes:
    - /test/commitlog:/var/lib/cassandra/commitlog:rw
version: '3'

 

변수 적용 방법-4: 외부 파일 선언 & 주입

$ cat develop.cfg
VERSION=1.0
HOME_DIR=/test

$ docker-compose --env-file=develop.cfg config

services:
  api:
    image: myservice:1.0
    volumes:
    - /test/commitlog:/var/lib/cassandra/commitlog:rw
version: '3'

댓글

Designed by JB FACTORY