[escaping] 도커 작성 파일에서 $ 달러 기호를 어떻게 이스케이프 할 수 있습니까?

docker-compose.yml파일 을 평가하려고 할 때 다음 오류를 발생시키는 YAML 스칼라가 있습니다.

오류 : “time_service”서비스의 “environment”옵션에 대한 잘못된 보간 형식 : “$ {Time.now}”

YAML :

---
version: '2'
services:
  time_service:
    build: "."
    environment:
      TIME: "${Time.now}"

작성된 것과 동일한 문자열 출력을 유지하지만 docker-compose가 잘못된 문자열 보간으로 해석하지 않도록하려면 어떻게해야합니까?



답변

여기에docker-compose 잘 문서화되어 있는 변수 대체를 치고 있습니다 .

$VARIABLE${VARIABLE}구문이 모두 지원됩니다. ${VARIABLE-default}및과 같은 확장 된 셸 스타일 기능 ${VARIABLE/foo/bar}은 지원되지 않습니다.

당신은 사용할 수있는 $$구성이 리터럴 달러 기호를 필요로 할 때 (이중 달러 기호). 이것은 또한 Compose가 값을 보간하는 것을 방지하므로를 사용하면 Compose에서 $$처리하지 않으려는 환경 변수를 참조 할 수 있습니다.

docker-compose은 Python으로 작성되었습니다. github 에서 볼 수 있듯이 특수 문자의 원래 의미를 얻기위한 두 배의 메커니즘은 많은 프로그램에서 찾을 수 있습니다. 1984 년으로 거슬러 올라가는 프로그래밍 중에 직접 사용해야했습니다.


답변

이 게시물의% 캐릭터에 대한 제안을 복사하여 답을 찾았 습니다.

이중 달러 기호가 필요합니다 $$.

그래서 나는 "$${Time.now}"평가가 필요 했습니다."${Time.now}"


답변