반응형
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파일을 사용할수도 있어보이는데, 이 부분은 스택오버플로우 문서에서 서술하고 있으므로 생략한다.
반응형