본문 바로가기
Dev

Docker-compose 환경변수 재사용

by ryush00 2022. 5. 3.

Docker에서는 템플릿으로 서비스를 적어두고 그 서비스를 상속받아서 새로운 서비스를 만들 수 있다.

  app: &app
    build:
      context: .
      dockerfile: Dockerfile.dev
    environment:
      - ELASTICSEARCH_URL=elasticsearch
  backend:
    <<: *app

이런식으로 Extension fields를 사용해서 backend 서비스로 한번 정의해둔 app을 불러올 수 있다.

 

그런데 만약 backend에서 환경 변수를 추가하고 싶다면? 단순하게 아래처럼 하면 될거라 생각할수도 있다.

      backend:
        <<: *app
        environment:
        - REDIS_URL=another

그러나 위 코드처럼 작성하게 되면 app에서 생성해둔 ELASTICSEARCH_URL 환경변수를 불러올수가 없다. 그냥 덮어씌어져서 내용이 REDIS_URL=another 밖에 안 남게 되어버린다.

 

https://stackoverflow.com/a/48651071

 

Stackoverflow에서 찾은 해결 방법은 생각보다 간단했다. 변수 자체를 따로 &app 처럼 선언하고 변수 부분에서 <<: *common-variables 처럼 재사용해주면 된다.

 

또는 env파일을 사용할수도 있어보이는데, 이 부분은 스택오버플로우 문서에서 서술하고 있으므로 생략한다. 

 

 

 

댓글